it-swarm.it

Copia da dir server remoto a server linux remoto. Come?

Qual è il modo migliore per copiare una directory (con directory e file secondari) da un server Linux remoto a un altro server Linux remoto? Mi sono collegato ad entrambi usando il client SSH (come PuTTY). Ho accesso root ad entrambi.

43
Arun Agrawal

Ci sono due modi in cui lo faccio di solito, entrambi usano ssh:

scp -r sourcedir/ [email protected]:/dest/dir/

o, il metodo più robusto e veloce (in termini di velocità di trasferimento):

rsync -auv -e ssh --progress sourcedir/ [email protected]:/dest/dir/

Leggi le pagine man per ogni comando se vuoi maggiori dettagli su come funzionano.

62
Ycros

Vorrei modificare una risposta precedentemente suggerita:

rsync -avlzp /path/to/sfolder [email protected]:/path/to/remote/dfolder

come segue:

-a (per archivio) implica -rlptgoD, quindi l e p sopra sono superflui. Mi piace anche includere -H, che copia i collegamenti reali. Non fa parte di -a di default perché è costoso. Quindi ora abbiamo questo:

rsync -aHvz /path/to/sfolder [email protected]server:/path/to/remote/dfolder

Devi anche stare attento alle barre finali. Probabilmente vuoi

rsync -aHvz /path/to/sfolder/ [email protected]:/path/to/remote/dfolder

se il desiderio è che il contenuto della sorgente "sfolder" appaia nella destinazione "dfolder". Senza la barra finale, una sottodirectory "sfolder" verrebbe creata nella "cartella" di destinazione.

32
user19218

rsync -avlzp/path/to/folder [email protected]:/path/to/remote/folder

9
Ana Betts
scp -r <directory> <username>@<targethost>:<targetdir>
6
Cody Brocious

Accedi a una macchina

$ scp -r/path/to/top/directory user @ server:/path/to/copy

5
Flame

Prova all'unisono se l'attività è ricorrente. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Dai un'occhiata a scp o rsync , man scpman rsync

scp file1 file2 dir3 [email protected]:path
2
John Douthat

Usa rsync in modo da poter continuare se la connessione si interrompe. E se qualcosa cambia, puoi copiarlo molto più velocemente!

Rsync funziona con SSH, quindi l'operazione di copia è sicura.

2
Ady Romantika

Ho usato rdiffbackup http://www.nongnu.org/rdiff-backup/index.html perché fa tutto ciò di cui hai bisogno senza opzioni fantasiose. Si basa sull'algoritmo rsync. Se è necessario copiarlo solo una volta, è possibile rimuovere in seguito la directory rdiff-backup-data sull'host di destinazione.

rdiff-backup [email protected]::/source-dir [email protected]::/dest-dir

dal documento:

rdiff-backup conserva anche sottodirectory, hard link, file dev, permessi, proprietà uid/gid, tempi di modifica, attributi estesi, acls e fork di risorse.

che è un bonus per le proposte scp -p poiché l'opzione -p non conserva tutto (ad es. i diritti sulle directory sono impostati male)

installa su ubuntu:

Sudo apt-get install rdiff-backup
2
Gunstick

scp farà il lavoro, ma c'è una ruga: la connessione alla seconda destinazione remota utilizzerà la configurazione sulla prima destinazione remota, quindi se usi .ssh/config sull'ambiente locale e ti aspetti che le chiavi rsa e dsa funziona, devi inoltrare il tuo agente al primo host remoto.

1
Justin Dossey

Bene, una risposta rapida darebbe un'occhiata alla manpage 'scp', o forse rsync - a seconda di cosa esattamente devi copiare. Se dovessi, potresti anche fare tar-over-ssh:

tar cvf - | ssh server tar xf -
1
zigdon

Penso che puoi provare con:

rsync -azvu -e ssh [email protected]:/directory/ [email protected]:/directory2/

(e presumo che tu sia su Host0 e che tu voglia copiare direttamente da Host1 a Host2)

Se quanto sopra non funziona, puoi provare:

ssh [email protected] "/usr/bin/rsync -azvu -e ssh /directory/ [email protected]:/directory2/"

in questo, funzionerebbe, se hai già configurato l'accesso SSH senza password da Host1 a Host2

1
Ram Prasad

Come utente non root idealmente:

scp -r src $ Host: $ percorso

Se hai già parte del contenuto su $ Host, considera l'utilizzo di rsync con ssh come tunnel.

/ Allan

0
Allan Wind

Se stai seriamente volendo una copia esatta, probabilmente anche tu vuoi usare l'opzione -p per scp, se lo stai usando. Ho scoperto che scp legge dai dispositivi e ho avuto problemi con cpio, quindi personalmente uso sempre tar , come questo:

cd /Origin; find . -xdev -depth -not -path ./lost+found -print0 \
| tar --create --atime-preserve=system --null --files-from=- --format=posix \
--no-recursion --sparse | ssh targethost 'cd /target; tar --extract \
--overwrite --preserve-permissions --sparse'

Tengo questo incantesimo in un file con vari altri mezzi per copiare i file in giro. Questo è per la copia su SSH; gli altri sono per la copia in un archivio compresso, per la copia all'interno dello stesso computer e per la copia su un non crittografato TCP quando SSH è troppo lento.

0
Teddy

scp come menzionato sopra è di solito il modo migliore, ma non dimenticare i due punti nelle specifiche della directory remota, altrimenti otterrai la copia della directory di origine sul computer locale.

0
Sergey Stolyarov

Mi piace incanalare il catrame attraverso ssh.

tar cf - [directory] | ssh [nome utente] @ [nome host] tar xf - -C [destinazione sulla casella remota]

Questo metodo ti offre molte opzioni. Dal momento che dovresti avere root ssh disabilitato, copiare i file per più account utente è difficile dato che stai accedendo al server remoto come un normale utente. Per ovviare a questo è possibile creare un file tar sulla casella remota che conserva ancora che conserva la proprietà.

tar cf - [directory] | ssh [nome utente] @ [nome host] "cat> output.tar"

Per connessioni lente è possibile aggiungere la compressione, z per gzip o j per bzip2.

tar cjf - [directory] | ssh [nome utente] @ [nome host] "cat> output.tar.bz2"

tar czf - [directory] | ssh [nome utente] @ [nome host] "cat> output.tar.gz"

tar czf - [directory] | ssh [nome utente] @ [nome host] tar xzf - -C [destinazione sulla casella remota]

0
Chuck