rsync con dos puntos en nombres de archivos

rsync con dos puntos en nombres de archivos

Tengo un directorio bastante grande que necesito sincronizar con un disco duro externo por motivos de respaldo y portabilidad.

/work

Intento ejecutar el siguiente comando rsync para copiar esta carpeta a mi disco duro externo:

rsync -avz /work /media/extern_drive --max-size '4G'

Lo cual parece funcionar bien, EXCEPTO que no copia ningún archivo que :contenga un.

Esta publicación ofrece una solución para un solo archivo: rsync: dos puntos en nombres de archivos, pero el problema es que tengo tantos de estos archivos dispersos en diferentes directorios que no puedo hacerlo manualmente.

¿Hay alguna forma de sincronizar recursivamente cualquier archivo con dos puntos en el nombre del archivo?

Respuesta1

Supongo que su disco externo utiliza un sistema de archivos como VFAT que no permite dos puntos en los nombres de los archivos.

Una opción simple sería hacer una copia de seguridad de sus archivos como archivos ( zip,,, lo 7zque tar.xzle guste). De esta manera, no estará limitado por ninguna característica del sistema de archivos que no sea el tamaño máximo de archivo.

Otra posibilidad sería utilizarcopia de seguridad rdiff, que se encarga de traducir los nombres de archivos que no caben en el sistema de archivos de destino, comosugirióporpiscina.

Un enfoque genérico para los caracteres no admitidos es aprovechar la capa del sistema de archivos para transformar los nombres de los archivos. ElFUSIBLEsistema de archivosposixovltransforma nombres de archivos en nombres compatibles con VFAT de Windows.

mkdir ~/mnt
mount.posixovl -S /media/extern_drive ~/mnt
rsync -a /work ~/mnt
fusermount -u ~/mnt

Ver¿Cómo puedo sustituir los dos puntos cuando realizo rsync en una llave USB?para obtener más detalles y consulte ese hilo para detectar cualquier solución nueva que pueda surgir.

Respuesta2

Intentaría incluir explícitamente el patrón de archivos con dos puntos en sus nombres de esta manera:

$ rsync -avz --include '*:*' /work /media/extern_drive --max-size '4G'

Ejemplos

$ mkdir 1 2
$ touch 1/file{1..5}
$ touch 1/file:{1..5}
Excluyéndolos explícitamente
$ rsync -avz --exclude '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5

sent 313 bytes  received 114 bytes  854.00 bytes/sec
total size is 0  speedup is 0.00
Incluirlos explícitamente
$ rm -fr 2/*

$ rsync -avz --include '*:*' 1/ 2/
sending incremental file list
./
file1
file2
file3
file4
file5
file:1
file:2
file:3
file:4
file:5

sent 573 bytes  received 209 bytes  1,564.00 bytes/sec
total size is 0  speedup is 0.00

información relacionada