¿Cómo scp archivos de tamaño menor que x?

13

Estoy desarrollando algo en mi computadora portátil y seleccionando los archivos en una PC de alto rendimiento (un servidor sin monitor). Por pereza acabo de hacer esto actualmente (en la computadora portátil):

scp -r ~/project/* server:~/project/

Sin embargo, algunos de los archivos en el directorio del proyecto son algunos archivos de registro y archivos de salida que no necesito enviar, que a veces puede ser un concierto más o menos. Lo que me gustaría es un comando limpio agradable que básicamente hace lo mismo (transmite todos los archivos del proyecto y sus subdirectorios) pero solo envía archivos por debajo de un determinado umbral de tamaño de archivo, como 100 mb. Solo tengo poca experiencia con bash y nada con regexp, así que realmente no tengo idea de cómo hacerlo sin algún método complicado como importar sys a python y usar un montón de ifs y comparaciones.

iammax
fuente

Respuestas:

27

puede usar el comando 'rsync' que tiene una opción para controlar el tamaño del archivo que se va a excluir.

rsync -rv --max-size=100m /path/in/local/ server:~/project/

de ' man rsync ',

--max-size=SIZE    don't transfer any file larger than SIZE

Respuesta actualizada : simplemente excluya los archivos de registro con 'rsync' - excluya la opción de la siguiente manera

rsync -rv --exclude='*.log' --max-size=100m /path/in/local/ server:~/project/

o puede usar la combinación de comandos 'buscar' con 'scp' y especificar el límite de tamaño de archivo con su -sizeopción. use ! -name '*.log'para excluir ciertos archivos que terminan con 'log'.

find /path/in/local -type f ! -name '*.log' -size -100m -exec scp '{}' server:~/project/ \;
αғsнιη
fuente
1
Una nota para el OP: rsynces similar scppero más eficiente, ya que solo transfiere cambios si se modifica un archivo.
Paddy Landau
tenga cuidado con el orden de los directorios comorsync -rv --max-size SOURCE DESTINATION. No leí correctamente, y esto podría tener muy malas consecuencias.
toto_tico