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.
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.
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]:/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.
rsync -avlzp/path/to/folder [email protected]:/path/to/remote/folder
scp -r <directory> <username>@<targethost>:<targetdir>
Accedi a una macchina
$ scp -r/path/to/top/directory user @ server:/path/to/copy
Prova all'unisono se l'attività è ricorrente. http://www.cis.upenn.edu/~bcpierce/unison/
Dai un'occhiata a scp o rsync , man scp
man rsync
scp file1 file2 dir3 [email protected]:path
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.
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
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.
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 -
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
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
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.
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.
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]