rsync solo nombres de archivos

rsync solo nombres de archivos

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

rsyncen 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 finden la raíz de ese árbol y echo "" >en cada archivo
  • úselo findpara obtener una lista de árboles de directorios, luego úselo mkdir -pen cada elemento de esa lista (posiblemente ordenando de manera inversa de antemano para minimizar el número de llamadas al sistema) y luego úselo touchen 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).

información relacionada