¿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
rsyncy pase-usi solo desea actualizar los archivos que son más nuevos en el directorio original, o--ignore-existingpara omitir todos los archivos que ya existen en el destino.(Tenga
/en cuenta el lado de la fuente: sin quersyncse crearía/remote/directory/directory).fuente
--ignore-existingagrega sin reemplazar, ¿qué pérdida de datos ves?rsyncfácilmente disponible ... (Como Win32-OpenSSH)--rsync-pathse necesita un paquete de terceros )scp sobrescribirá los archivos si tiene permisos de escritura.
En otras palabras: puede
scpomitir 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
findfuente
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 +wpara 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-existingperder 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,csynco porque mi fusible de almacenamiento sólo tiene SFTP.rsyncno 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-servero iniciersynccomo demonio aquí.En mi caso, no pude hacer esto y la solución fue: lftp .
lftpEl 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
scpsobrescribe 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
lsen 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.