GNU/Linux >> Tutoriales Linux >  >> Linux

rsync N archivos más nuevos en un directorio

La forma más sencilla es ejecutar zsh en lugar de bash.

rsync -a -- /path/to/directory/*(om[1,42]) remote-server:

Entre paréntesis, om ordena los archivos por tiempo de modificación inversa (es decir, por edad creciente), y [1,42] selecciona las primeras 42 coincidencias.

Si solo desea archivos normales y no directorios, agregue un . después del paréntesis de apertura. Para más posibilidades, busque en "calificadores globales" en el zshexpn página man.

Si desea hacer coincidir archivos en el árbol de directorios enraizados en /path/to/directory , en lugar de solo dentro de ese directorio, use /path/to/directory/**/*(.om[1,42]) . Sin embargo, esto enviará todos los archivos al mismo directorio en el destino.


Suponiendo que desea enviar archivos desde el directorio de trabajo actual:

rsync `ls -tp | grep -v / | head -n <n>` <destination> <options>

hará el truco. Por ejemplo:

rsync `ls -tp | grep -v / | head -n 10` [email protected]:/dest/dir/ --progress --compress

Esto generará un error si no se encuentran archivos en el directorio de trabajo actual, o si alguno de los archivos principales contiene espacios u otros caracteres especiales.

Los caracteres ` alrededor de ls -tp | grep -v / | head -n <n> dígale a bash que ejecute los comandos y los reemplazó con la lista de archivos resultante como una lista separada por espacios. El -t opción le dice a ls para ordenar por marca de tiempo, el -p le dice que agregue un / después de los nombres de directorio y la parte grep filtra las líneas que terminan en / para que no termines enviando directorios. Agregar -c al ls opciones si desea que los archivos más nuevos se juzguen por el tiempo de creación en lugar del tiempo de modificación (aunque tenga en cuenta que algunos programas eliminarán y reemplazarán archivos en lugar de actualizarlos, por lo que ctime y mtime pueden ser iguales aunque un archivo parezca haber existido por más tiempo ).

No diré que es sin duda el más fácil pero sería la forma en que primero pensaría.

(subpregunta de mwm en un comentario)

¿Qué hay del revés? servidor a local?

Eso sería un poco más complejo ya que no creo que pueda tener múltiples fuentes de archivos remotos en la línea de comando rsync como puede hacerlo con las locales. Podría ejecutar rsync en el servidor a través de ssh , abriendo un túnel de regreso a su sshd local (con el mismo ssh invocación a través de la que ejecuta rsync) para recibir la conexión, esencialmente usó el mismo comando desde el otro lado.


Linux
  1. Linux:¿Eliminar eficientemente un directorio grande que contiene miles de archivos?

  2. ¿Archivos Cat con directorio?

  3. ¿Cómo silenciar selectivamente Rsync?

  4. Descomprimir todos los archivos en un directorio

  5. Linux equivalente a robocopy?

Cómo contar archivos en el directorio en Linux

Ejemplos de Rsync para transferir archivos en Linux

Cómo usar Rsync

Cómo contar archivos en el directorio en Linux

Contar el número de archivos en un directorio en Linux

Ejemplos de comandos rsync de Linux