todos - Linux cómo copiar pero no sobrescribir?
mover varios archivos en linux (6)
Considere el uso de rsync
.
rsync -a -v --ignore-existing src dst
Según los comentarios, rsync -a -v src dst
no es correcto porque actualizará los archivos existentes.
Quiero cp
un directorio, pero no quiero sobrescribir ningún archivo existente, incluso si son más antiguos que los archivos copiados. Y quiero hacerlo completamente inactivo ya que esto será parte de un script de Crontab Bash. ¿Algunas ideas?
Esto funcionará en RedHat:
false | cp -i source destination 2>/dev/null
Actualizar y no sobrescribir es algo diferente.
Para las personas que descubren que no tienen una opción ''n'' (como yo en RedHat), puede usar cp -u
para escribir solo el archivo si la fuente es más nueva que la existente (o no existe una) .
[editar] Como se mencionó en los comentarios, esto sobrescribirá los archivos más antiguos, por lo que no es exactamente lo que quería el OP. Usa la respuesta de Ceving para eso.
Alpine Linux: la siguiente respuesta es solo para el caso de un solo archivo: en alpine cp -n
no funciona (y false | cp -i ...
también), así que la solución que funciona en mi caso es la siguiente:
if [ ! -f env.js ]; then cp env.example.js env.js; fi
En el ejemplo anterior, verificamos si el archivo env.js
existe y si no, copiamos env.example.js
como env.js
cp -n
Es lo que quieres. Ver la página del manual.