Copie el directorio de forma recursiva solo si en el destino el archivo existe y solo si es más nuevo que el destino

Copie el directorio de forma recursiva solo si en el destino el archivo existe y solo si es más nuevo que el destino

¿Cómo podemos copiar un archivo y/o directorio solo si en el destino el archivo existe y solo si es más nuevo que en el destino, y para el caso del directorio deberecursivamentecopiar con capacidad tal
como

 $ ls -a ~/.config
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/

 $ ls -a /other/path/home/.config/
 gtk-2.0/             
 gtk-3.0/
 SpeedCrunch/


$ rsync -u --existing ~/.config /other/path/home/
skipping directory .

no puedo trabajar.

¿Qué utilidad de Linux y cómo hacerla/solucionarla? gracias antes

Respuesta1

Rápido:

Olvidó incluir el modificador recursivo "-r":

rsync -u --existing -r ~/.config /other/path/home/

Cosas adicionales:

Además, puede considerar usar -aun interruptor que equivale a -rlptgoDincluir recursivo además de preservar algunos atributos importantes de la siguiente manera:

  • -r: recurrir a directorios
  • -l: copiar enlaces simbólicos como enlaces simbólicos
  • -p: conservar permisos
  • -t: preservar los tiempos de modificación
  • -g: preservar grupo
  • -o: conservar propietario (solo superusuario)
  • -D: conserva archivos especiales igual que --devices --specials

Utilice lo siguiente para realizar pruebas:

mkdir src
touch src/file{1..3}
touch src/thefile
# Destination:
mkdir dst
touch dst/file{1..3}
touch -d 20201023 dst/thefile
# List all
free -D src dst

Probar ahora:

rsync -rt -uPv --existing src dst/

Solía:

  • -r: recurrir a directorios
  • -t: preservar los tiempos de modificación
  • -u: omite archivos que son más nuevos en el receptor
  • -P: muestra el progreso durante la transferencia
  • -v: aumenta la verbosidad
  • --existing: omite la creación de nuevos archivos en el receptor

información relacionada