Tengo que transportar muchos archivos de una PC a otra (ambos Linux). Me gustaría usar scp
para eso, pero scp
solo permite transferir un archivo a la vez.
¿Cómo puedo hacer esto?
yo tengo
- No hay posibilidad de usar rsync o cualquier otro protocolo
- No hay posibilidad de usar certificados sin contraseña (pero tener un certificado con una frase de contraseña)
- Una lista de archivos para transferir y una lista con la ruta de destino de los archivos en el otro servidor
- Los archivos están distribuidos en muchos directorios, y no todos los archivos en los directorios que quiero copiar
Si es posible, me gustaría descomprimir y descomprimir de forma transparente para ahorrar ancho de banda.
es posible?
-C'' on a line by itself will cause the current directory to be changed to the directory specified on the following line. Names are terminated by newlines unless --null is specified. Note that --null also disables the special handling of lines containing
-C ''".Estoy bastante seguro de que eso no es cierto, al menos no para el
scp
comando proporcionado por OpenSSH incluido con la mayoría de las distribuciones de Linux.Yo uso con
scp file1 file2 ... fileN user@host:/destination/directory/
bastante frecuencia.Para una compresión transparente, el protocolo SSH tiene esto incorporado y
scp
puede usarlo si proporciona la-C
opción en la línea de comando. Para muchos archivos pequeños similares, encontrará que la opción tar + gz sugerida por akira obtiene una mejor compresión, ya que puede hacer uso de la similitud entre dichos archivos dondescp
comprime cada archivo como una entidad separada. Sin embargo, generalmente prefiero usar scp, ya que es más fácil reanudar una transferencia parcial (o, aunque sé en esta situación, el interlocutor no tiene la opción),rsync
ya que es aún más fácil de reanudar y comparte toda la opción tar + gz -corriente de compresión ventaja.fuente
No
scp -r yourdir otherhost:/otherdir
funcionaIntenta esto entonces:
el
z
-flag to tar hace compresión. O puede usar -C para ssh:fuente
-C
hacer?En RHEL5, esta es la única forma posible que conozco para copiar de forma segura una lista de archivos que contienen caracteres especiales (como un espacio). Cree un script de shell e incluya lo siguiente:
fuente
Se puede hacer sin muchos problemas.
Simplemente creo una lista de archivos con el nombre de host al lado de cada archivo y scp parece analizarlo bien. es decir.
Scp parece funcionar bien con esta sintaxis. Cuando lo intenté sin el nombre de host al lado de cada archivo, falló después del primer archivo. Parece recordar otra sintaxis que usé para esto antes y la publicaré una vez que la localice.
fuente
~/
su mayoría puede omitirse: SCP opera en relación con el directorio de inicio. .. Si tiene una lista de otro lugar en$list
:scp $(echo "$list"|sed "s/^/$srchost:/") local_destination
(Sin embargo, esto se romperá para los nombres de archivo con espacios)Recomendaría que las partes usen un comando como este para crear un archivo a partir de su lista de archivos
tar -cvf allfiles.tar -L mylist.txt
Luego use scp para descargar el archivo.
scp user @ remotehost: ~ / allfiles.tar
/programming/8033857/tar-archiving-that-takes-input-from-a-list-of-files
fuente