Después de jugar con scp por un tiempo, encontré la solución más sólida:
(Cuidado con las comillas simples y dobles)
Local a remoto:
scp -r "FILE1" "FILE2" HOST:'"DIR"'
Remoto a local:
scp -r HOST:'"FILE1" "FILE2"' "DIR"
Tenga en cuenta que lo que sea después de "HOST:" se enviará al control remoto y se analizará allí. Por lo tanto, debemos asegurarnos de que el shell local no los procese. Es por eso que aparecen comillas simples. Las comillas dobles se usan para manejar espacios en los nombres de archivo.
Si todos los archivos están en el mismo directorio, podemos usar * para hacerlos coincidir, como
scp -r "DIR_IN"/*.txt HOST:'"DIR"'
scp -r HOST:'"DIR_IN"/*.txt' "DIR"
En comparación con el uso de la sintaxis "{}", que solo es compatible con algunos shells, esta es universal
rsync
, tal vez pueda ayudarte en este caso y en muchos casos futuros. Luego, para evitar ingresar contraseñas (y mucho menos varias veces), debe leer sobressh
las claves públicas / privadas, por ejemplo, digitalocean.com/community/tutorials/how-to-set-up-ssh-keys--2scp root@192.168.56.120:'/etc/openvpn/ca.crt /etc/openvpn/client/client0.crt /etc/openvpn/client/client0.key /etc/openvpn/client/ta.key' ./
.