it-swarm-id.com

Remote Linux server untuk menyalin dir server linux remote. Bagaimana?

Apa cara terbaik untuk menyalin direktori (dengan subdirektori dan file) dari satu server Linux jarak jauh ke server Linux jarak jauh lainnya? Saya telah terhubung ke keduanya menggunakan klien SSH (seperti Putty). Saya memiliki akses root ke keduanya.

43
Arun Agrawal

Ada dua cara yang biasanya saya lakukan ini, keduanya menggunakan ssh:

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

atau, metode yang lebih kuat dan lebih cepat (dalam hal kecepatan transfer):

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

Baca halaman manual untuk setiap perintah jika Anda ingin detail lebih lanjut tentang cara kerjanya.

62
Ycros

Saya akan memodifikasi balasan yang disarankan sebelumnya:

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

sebagai berikut:

-a (untuk arsip) menyiratkan -rlptgoD sehingga l dan p di atas berlebihan. Saya juga suka memasukkan -H, yang menyalin tautan keras. Ini bukan bagian dari -a secara default karena mahal. Jadi sekarang kita punya ini:

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

Anda juga harus berhati-hati dalam mengikuti garis miring. Anda mungkin mau

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

jika keinginan untuk isi dari sumber "sfolder" muncul di tujuan "dfolder". Tanpa trailing slash, subdirektori "sfolder" akan dibuat di "dfolder" tujuan.

32
user19218

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

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

Masuk ke satu mesin

$ scp -r/path/ke/top/direktori pengguna @ server:/path/ke/salin

5
Flame

Coba serentak jika tugas itu berulang. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Lihat scp atau rsync , man scpman rsync

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

Gunakan rsync sehingga Anda dapat melanjutkan jika koneksi terputus. Dan jika ada perubahan, Anda juga dapat menyalinnya lebih cepat!

Rsync bekerja dengan SSH sehingga operasi penyalinan Anda aman.

2
Ady Romantika

Saya menggunakan rdiffbackup http://www.nongnu.org/rdiff-backup/index.html karena ia melakukan semua yang Anda butuhkan tanpa opsi mewah. Ini didasarkan pada algoritma rsync. Jika Anda hanya perlu menyalin satu kali, Anda nanti dapat menghapus direktori rdiff-backup-data di Host tujuan.

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

dari doc:

rdiff-backup juga mempertahankan subdirektori, tautan keras, file dev, izin, kepemilikan uid/gid, waktu modifikasi, atribut tambahan, ACL, dan garpu sumber daya.

yang merupakan bonus untuk proposal scp -p karena opsi -p tidak melindungi semua (mis. hak atas direktori ditetapkan dengan buruk)

instal di ubuntu:

Sudo apt-get install rdiff-backup
2
Gunstick

scp akan melakukan pekerjaan itu, tetapi ada satu kerutan: koneksi ke tujuan jarak jauh kedua akan menggunakan konfigurasi pada tujuan jarak jauh pertama, jadi jika Anda menggunakan .ssh/config pada lingkungan lokal, dan Anda mengharapkan kunci rsa dan dsa untuk berfungsi, Anda harus meneruskan agen Anda ke Host jarak jauh pertama.

1
Justin Dossey

Nah, jawaban cepat akan melihat pada halaman 'scp', atau mungkin rsync - tergantung persis pada apa yang Anda perlu salin. Jika harus, Anda bahkan bisa melakukan tar-over-ssh:

tar cvf - | ssh server tar xf -
1
zigdon

Saya pikir Anda dapat mencoba:

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

(dan saya berasumsi Anda berada di Host0 dan Anda ingin menyalin dari Host1 ke Host2 secara langsung)

Jika hal di atas tidak berhasil, Anda dapat mencoba:

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

dalam hal ini, itu akan berhasil, jika Anda sudah memiliki pengaturan SSH tanpa kata sandi login dari Host1 ke Host2

1
Ram Prasad

Sebagai pengguna non-root idealnya:

scp -r src $ Host: $ path

Jika Anda sudah memiliki beberapa konten di $ Host, pertimbangkan untuk menggunakan rsync dengan ssh sebagai terowongan.

/ Allan

0
Allan Wind

Jika Anda serius ingin salinan yang tepat, Anda mungkin juga ingin menggunakan -p beralih ke scp, jika Anda menggunakannya. Saya telah menemukan scp dibaca dari perangkat, dan saya punya masalah dengan cpio, jadi saya pribadi selalu menggunakan tar , seperti ini:

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'

Saya menyimpan mantra ini di dalam file dengan berbagai cara lain untuk menyalin file. Yang ini untuk menyalin melalui SSH; yang lain adalah untuk menyalin ke arsip terkompresi, untuk menyalin dalam komputer yang sama, dan untuk menyalin melalui soket TCP tidak terenkripsi ketika SSH terlalu lambat).

0
Teddy

scp seperti yang disebutkan di atas biasanya merupakan cara terbaik, tetapi jangan lupa titik dua dalam spesifikasi direktori jarak jauh jika tidak Anda akan mendapatkan salinan direktori sumber pada mesin lokal.

0
Sergey Stolyarov

Saya suka pipa tar melalui ssh.

tar cf - [direktori] | ssh [nama pengguna] @ [nama host] tar xf - -C [tujuan di kotak jauh]

Metode ini memberi Anda banyak pilihan. Karena Anda seharusnya menonaktifkan root menyalin file untuk beberapa akun pengguna sulit karena Anda masuk ke server jauh sebagai pengguna normal. Untuk menyiasati ini, Anda dapat membuat file tar pada kotak jauh yang masih memegang yang mempertahankan kepemilikan.

tar cf - [direktori] | ssh [nama pengguna] @ [nama host] "cat> output.tar"

Untuk koneksi yang lambat Anda dapat menambahkan kompresi, z untuk gzip atau j untuk bzip2.

tar cjf - [direktori] | ssh [nama pengguna] @ [nama host] "cat> output.tar.bz2"

tar czf - [direktori] | ssh [nama pengguna] @ [nama host] "cat> output.tar.gz"

tar czf - [direktori] | ssh [nama pengguna] @ [nama host] tar xzf - -C [tujuan di kotak jauh]

0
Chuck