Es posible quesolorsync los nombres de archivos? Tengo una caja de almacenamiento y quiero que los nombres de los archivos (y sus rutas) se agreguen a otra caja. Actualmente estoy creando cada archivo touch
(se crearán con un tamaño de 0 bytes). Lleva demasiado tiempo y me preguntaba si esto podría automatizarse con rsync
.
Si no, ¿existe alguna otra herramienta que lo permita? ¿O necesitaría codificar algo personalizado?
Respuesta1
Si su objetivo es crear archivos vacíos, puede crear una plantilla de la siguiente manera:
#!/bin/bash
FILES=$1 # original structure
TMPL=$2 # where to create empty files
[[ -d $FILES ]] || exit 1
[[ -d $TMPL ]] || mkdir -p $TMPL || exit 1
cd $TMPL
find "$FILES" -type d -printf "$TMPL%p\0" | sort -z |xargs -0 -L 1000 mkdir -p
find "$FILES" -type f -printf "$TMPL%p\0" | xargs -0 -L 1000 touch
Esto crea el directorio de cada archivo del árbol original y toca los archivos en las carpetas creadas en TMPL.
Después de crear una carpeta "reflejada" con solo archivos vacíos, se puede sincronizar con cualquier host como cualquier otra carpeta:
rsync -av -e 'ssh -p 22 -l username' \
/template/structure remotehost:/backup/templates/
La opción -e es opcional si el nombre de usuario es el mismo en ambos hosts y si sshd se ejecuta en el puerto predeterminado. Preste atención a lo que sucede cuando especifica una barra diagonal en ambas o cualquiera de las partes desde y hasta. Es significativo. El parámetro host remoto puede ser una dirección IP en lugar de un alias.
Respuesta2
rsync
en sí no parece tener una opción para crear solo archivos. Sin embargo, puedes probar varias formas en lugar de utilizar el tacto manualmente:
- rsync el árbol de directorios, luego ejecútelo
find
en la raíz de ese árbol yecho "" >
en cada archivo - úselo
find
para obtener una lista de árboles de directorios, luego úselomkdir -p
en cada elemento de esa lista (posiblemente ordenando de manera inversa de antemano para minimizar el número de llamadas al sistema) y luego úselotouch
en una lista de archivos creada de manera similar.
Sin embargo, elegiría la primera opción si el espacio está disponible, ya que conserva los permisos y derechos de acceso (si se le dan los argumentos adecuados rsync
).