¿Cómo copio un directorio completo en un directorio con el mismo nombre sin reemplazar el contenido en el directorio de destino? (en cambio, me gustaría agregar al contenido de la carpeta de destino)
ssh
rsync
scp
synchronization
Daniel Böhmer
fuente
fuente
Respuestas:
Use
rsync
y pase-u
si solo desea actualizar los archivos que son más nuevos en el directorio original, o--ignore-existing
para omitir todos los archivos que ya existen en el destino.(Tenga
/
en cuenta el lado de la fuente: sin quersync
se crearía/remote/directory/directory
).fuente
--ignore-existing
agrega sin reemplazar, ¿qué pérdida de datos ves?rsync
fácilmente disponible ... (Como Win32-OpenSSH)--rsync-path
se necesita un paquete de terceros )scp sobrescribirá los archivos si tiene permisos de escritura.
En otras palabras: puede
scp
omitir eficazmente dichos archivos eliminando temporalmente los permisos de escritura (si es el propietario de los archivos).fuente
scp -r [email protected]:/location/of/files/* /local/location/
Puede copiar solo archivos nuevos por fecha. Utilizar
find
fuente
Si puede hacer que el contenido del archivo de destino sea de solo lectura:
antes de ejecutar
scp
(se quejará y omitirá los archivos existentes).Y cámbielos nuevamente después (
chmod +w
para obtener un valor basado en umask). Si no todos los archivos tienen permiso de escritura de acuerdo con su umask, de alguna manera tendría que almacenar los permisos para poder restaurarlos.(La respuesta de Gilles sobrescribe los archivos existentes si localmente son más nuevos, perdí datos valiosos de esa manera. No entiendo por qué esa respuesta incorrecta y dañina tiene tantos votos positivos).
fuente
rsync --ignore-existing
perder datos?find: missing argument to '-exec'
de utilizar este comando, y en su lugar tuvo que usar:find . -type f -exec chmod a-w {} \;
. Mi Linux es malo, mmm.find . -type f -exec chmod a-w {} \;
Tenía una tarea similar, en mi caso no podía usar
rsync
,csync
o porque mi fusible de almacenamiento sólo tiene SFTP.rsync
no se pudo cambiar la fecha y la hora del archivo, algunas otras utilidades (comocsync
) me mostraron otros errores: " No se puede crear el archivo temporal Se detectó una distorsión del reloj ".Si tiene acceso al servidor de almacenamiento, simplemente instale
openssh-server
o iniciersync
como demonio aquí.En mi caso, no pude hacer esto y la solución fue: lftp .
lftp
El uso de la sincronización está a continuación:/src/folder
- es la carpeta en mi PC,/rem/folder
- essftp://sft.domain.tld/rem/folder
.Puede encontrar páginas de manual en el enlace: http://lftp.yar.ru/lftp-man.html
fuente
Para copiar una gran cantidad de archivos, es más rápido manipularlos. Al usar -k también evita que tar sobrescriba los archivos al desempaquetarlos en el sistema de destino.
fuente
scp
sobrescribe los archivos y no hay ningún interruptor que lo detenga, pero puede copiar las cosas, hacer el scp y luego copiar los archivos existentes. Ejemplos:Copie todos los archivos existentes fuera del camino
Copie todo usando scp
Copie los archivos originales sobre cualquier cosa que scp haya escrito sobre:
fuente
Otra forma de lograr esto es hacer un
ls
en la carpeta de destino:En la carpeta de destino remota:
En la fuente:
En destino:
fuente
-
>
espacio de nueva línea u otros caracteres especiales. 3. Codifique un bucle for en un script de Python. Generar un programa en tiempo de ejecución es difícil y complicado (incluso cuando lo hacen programadores profesionales), por muchas razones. Generar un script de shell es aún peor: una idea horrible.