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 no interactivo ya que esto será parte de un script de Crontab Bash. ¿Algunas ideas?Linux cómo copiar pero no sobreescribir?
Respuesta
tomada de la man page:
-n, --no-clobber
do not overwrite an existing file (overrides a previous -i option)
Ejemplo:
cp -n myoldfile.txt mycopiedfile.txt
en lugar de utilizar 'rsync -a -v --ignore-existente
cp -n config.js.sample config.js' y funciona –
@ La solución de Whitebird también está activa. –
cp -n
es lo que quieres. Ver la página man.
Para las personas que encuentran que no tienen una opción 'n' (como yo en RedHat) se puede utilizar para cp -u
solo escriba el archivo si la fuente es más nueva que la existente (o no existe).
[edit] Como se mencionó en los comentarios, esto sobrescribirá los archivos más antiguos, por lo que no es exactamente lo que el OP quería. Usa la respuesta de ceving para eso.
OP pidió no sobrescribir los archivos existentes ** incluso si son más antiguos que los archivos copiados **, por lo que '-u' en realidad no se ajusta a su propósito. –
Dios mío, tienes toda la razón. Me sorprende que haya tardado tanto en darse cuenta. –
Considere el uso de rsync
.
rsync -a -v src dst
pero esto actualización archivos si son diferentes.
De acuerdo con los comentarios
rsync -a -v --ignore-existing src dst
ignorará por completo los archivos existentes.
Alpine Linux: A continuación respuesta es sólo para el caso de una sola fila: en Alpine cp -n
no funciona (y false | cp -i ...
también) así que la solución de trabajo en mi caso que he encontrado es:
if [ ! -f env.js ]; then cp env.example.js env.js; fi
En el ejemplo anterior verificamos si existe el archivo env.js
y si no, copiamos env.example.js
como env.js
.
- 1. Copiar archivos sin sobreescribir
- 2. Copiar pero no mover
- 3. cómo copiar una estructura de objetos (pero no los datos)
- 4. Sobreescribir estilos en WPF
- 5. sobreescribir métodos en Scala
- 6. ¿Cómo implementar/sobreescribir rápidamente métodos en Eclipse?
- 7. ¿Cómo no copiar algunos atributos?
- 8. Cómo copiar texto de Emacs a otra aplicación en Linux
- 9. MySQL: ¿Cómo copiar filas, pero cambiar algunos campos?
- 10. carga automática funciona bajo Windows, pero no en Linux
- 11. obras comando sed en Linux, pero no en OS X
- 12. En Linux, ¿cómo copiar todos los archivos que no comienzan con una cadena dada?
- 13. no copiar istringstream
- 14. Powershell Copy-Item pero sólo copiar los archivos modificados
- 15. Tutorial de ensamblaje básico pero exhaustivo (Linux)?
- 16. No se puede copiar un archivo rápidamente al portapapeles en un ordenador con Linux
- 17. Objective-C ¿Es seguro sobreescribir [NSObject initialize]?
- 18. ¿Cómo se copia un archivo en PHP sin sobreescribir un archivo existente?
- 19. Puede Groovy copiar una firma de clase pero modificar implementaciones
- 20. Comandos de Linux para copiar un archivo en muchos archivos
- 21. No se puede copiar un archivo con '$' en nombre en Linux
- 22. UITextField: no se puede escribir texto, pero los emoticones, copiar/pegar y retroceder están bien
- 23. Cómo copiar el archivo struct?
- 24. ¿Cómo copiar una matriz?
- 25. GIT: ¿Cómo verificar un archivo de una confirmación previa sin sobreescribir la actual?
- 26. ¿Cómo puedo copiar varios archivos binarios en un archivo en un sistema Linux?
- 27. ¿Cómo copiar toda la carpeta de la instancia de Amazon EC2 Linux a la máquina local de Linux?
- 28. Cómo copiar un NSMutableArray
- 29. ¿Cómo copiar un archivo?
- 30. Cómo decirle a 'PowerShell' Copiar-Elemento para copiar incondicionalmente archivos
https://unix.stackexchange.com/questions/67539/how-to-rsync-only-new-files – n611x007