Estoy ejecutando scp y copiando una carpeta del servidor remoto, estoy ejecutando con -rl, así que veo que los archivos se copian, ¿es posible omitir el archivo actual de alguna manera?
Estoy ejecutando scp y copiando una carpeta del servidor remoto, estoy ejecutando con -rl, así que veo que los archivos se copian, ¿es posible omitir el archivo actual de alguna manera?
Respuestas:
No, no puedes. Pero puedes parar scp
y usar rsync
en su lugar. Copiará solo las diferencias que quedan de la copia parcial y puede excluir cualquier archivo o directorio que no desee transferir.
rsync -avP -e ssh --exclude=somefile --exclude=somedir ./localdir/ user@server:remotedir/
No, no con -r
o cualquier otra sintaxis que realice múltiples transferencias de archivos dentro de un scp
comando.
Dicho esto, scp
también sigue el paradigma de UNIX: escribir programas que proporcionan una funcionalidad simple y precisa que se puede encadenar de manera interesante. Esto significa que sería posible escribir un bucle que realice de forma interactiva invocaciones individuales del comando, una por archivo. Entonces podrá salir de los comandos individuales mientras se ejecutan. (Ctrl-C)
El código para esto se deja como un ejercicio para el lector, pero debe enfatizarse la necesidad de que este bucle se ejecute dentro de un shell interactivo. Salir de un shell no interactivo terminaría todo el trabajo.
¡Sí tu puedes!
Enumeremos el directorio remoto y copiemos cada archivo por separado. Luego presione ctrl-c para cada archivo que no quiera copiar:
OLD_IFS="$IFS"
IFS=$'\n'
for file in `ssh user@host ls /remote/directory/`
do echo user@host:/remote/directory/$file /local/directory/
done;
IFS="$OLD_IFS"
OLD_IFS está aquí para manejar archivos con espacios en ellos.