it-swarm-vi.tech

Máy chủ Linux từ xa để sao chép máy chủ linux từ xa. Làm sao?

Cách tốt nhất để sao chép một thư mục (với các thư mục con và tệp) từ một máy chủ Linux từ xa sang một máy chủ Linux từ xa khác là gì? Tôi đã kết nối với cả hai bằng cách sử dụng máy khách SSH (như PuTTY). Tôi có quyền truy cập root cho cả hai.

43
Arun Agrawal

Có hai cách tôi thường làm điều này, cả hai đều sử dụng ssh:

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

hoặc, phương thức mạnh hơn và nhanh hơn (về tốc độ truyền):

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

Đọc các trang hướng dẫn cho mỗi lệnh nếu bạn muốn biết thêm chi tiết về cách chúng hoạt động.

62
Ycros

Tôi sẽ sửa đổi một trả lời được đề xuất trước đây:

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

như sau:

-a (để lưu trữ) ngụ ý -rlptgoD nên l và p ở trên là thừa. Tôi cũng muốn bao gồm -H, sao chép các liên kết cứng. Nó không phải là một phần của -a theo mặc định vì nó đắt tiền. Vì vậy, bây giờ chúng ta có điều này:

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

Bạn cũng phải cẩn thận về dấu gạch chéo. Bạn có thể muốn

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

nếu mong muốn là nội dung của nguồn "sfolder" sẽ xuất hiện ở đích "dfolder". Nếu không có dấu gạch chéo, một thư mục con "sfolder" sẽ được tạo ở đích "dfolder".

32
user19218

rsync -avlzp/path/to/thư mục [email protected]:/path/to/remote/thư mục

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

Đăng nhập vào một máy

$ scp -r/path/to/top/thư mục người dùng @ server:/path/to/copy

5
Flame

Hãy thử unison nếu nhiệm vụ được lặp lại. http://www.cis.upenn.edu/~bcpierce/unison/

3
user11104

Hãy xem scp hoặc rsync , man scpman rsync

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

Sử dụng rsync để bạn có thể tiếp tục nếu kết nối bị hỏng. Và nếu có gì đó thay đổi, bạn cũng có thể sao chép chúng nhanh hơn nhiều!

Rsync hoạt động với SSH để hoạt động sao chép của bạn được an toàn.

2
Ady Romantika

Tôi đã sử dụng rdiffbackup http://www.nongnu.org/rdiff-backup/index.html vì nó làm tất cả những gì bạn cần mà không có bất kỳ tùy chọn ưa thích nào. Nó dựa trên thuật toán rsync. Nếu bạn chỉ cần sao chép một lần, sau đó bạn có thể xóa thư mục dữ liệu dự phòng dữ liệu trên Máy chủ đích.

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

từ tài liệu:

sao lưu dự phòng cũng bảo tồn các thư mục con, liên kết cứng, tệp dev, quyền, quyền sở hữu uid/gid, thời gian sửa đổi, thuộc tính mở rộng, acls và nhánh tài nguyên.

đó là phần thưởng cho các đề xuất scp -p vì tùy chọn -p không bảo toàn tất cả (ví dụ: quyền trên các thư mục được đặt không tốt)

cài đặt trên Ubuntu:

Sudo apt-get install rdiff-backup
2
Gunstick

scp sẽ thực hiện công việc, nhưng có một nếp nhăn: kết nối đến đích từ xa thứ hai sẽ sử dụng cấu hình trên đích từ xa đầu tiên, vì vậy nếu bạn sử dụng .ssh/config trên môi trường cục bộ và bạn mong đợi các phím rsa và dsa làm việc, bạn phải chuyển tiếp đại lý của mình đến Host từ xa đầu tiên.

1
Justin Dossey

Chà, câu trả lời nhanh sẽ xem qua trang chủ của 'scp', hoặc có lẽ là rsync - tùy thuộc vào chính xác những gì bạn cần sao chép. Nếu bạn phải, bạn thậm chí có thể thực hiện tar-over-ssh:

tar cvf - | ssh server tar xf -
1
zigdon

Tôi nghĩ bạn có thể thử với:

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

(và tôi giả sử bạn đang ở trên Host0 và bạn muốn sao chép trực tiếp từ Host1 sang Host2)

Nếu cách trên không hoạt động, bạn có thể thử:

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

trong trường hợp này, nó sẽ hoạt động, nếu bạn đã thiết lập đăng nhập SSH không mật khẩu từ Host1 đến Host2

1
Ram Prasad

Là người dùng không root lý tưởng:

scp -r src $ Máy chủ: $ path

Nếu bạn đã có một số nội dung trên $ Host, hãy cân nhắc sử dụng rsync với ssh làm đường hầm.

/ Allan

0
Allan Wind

Nếu bạn nghiêm túc muốn có một bản sao chính xác, có lẽ bạn cũng muốn sử dụng công tắc -p để scp, nếu bạn đang sử dụng nó. Tôi đã thấy rằng scp đọc từ thiết bị và tôi đã gặp vấn đề với cpio, vì vậy cá nhân tôi luôn sử dụng tar , như thế này:

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'

Tôi giữ câu thần chú này trong một tệp với nhiều cách sao chép tệp khác xung quanh. Cái này là để sao chép qua SSH; những cái khác là để sao chép vào một kho lưu trữ nén, để sao chép trong cùng một máy tính và để sao chép qua một ổ cắm không được mã hóa TCP khi SSH quá chậm.

0
Teddy

scp như đã đề cập ở trên thường là một cách tốt nhất, nhưng đừng quên dấu hai chấm trong thư mục từ xa, nếu không bạn sẽ nhận được bản sao của thư mục nguồn trên máy cục bộ.

0
Sergey Stolyarov

Tôi thích ống tar qua ssh.

tar cf - [thư mục] | ssh [tên người dùng] @ [tên máy chủ] tar xf - -C [đích trên hộp từ xa]

Phương pháp này cung cấp cho bạn rất nhiều lựa chọn. Vì bạn nên sao chép các tập tin sao chép gốc bị vô hiệu hóa ssh cho nhiều tài khoản người dùng vì bạn đang đăng nhập vào máy chủ từ xa như một người dùng bình thường. Để giải quyết vấn đề này, bạn có thể tạo một tệp tar trên hộp từ xa vẫn giữ quyền sở hữu.

tar cf - [thư mục] | ssh [tên người dùng] @ [tên máy chủ] "cat> output.tar"

Đối với các kết nối chậm, bạn có thể thêm nén, z cho gzip hoặc j cho bzip2.

tar cjf - [thư mục] | ssh [tên người dùng] @ [tên máy chủ] "cat> output.tar.bz2"

tar czf - [thư mục] | ssh [tên người dùng] @ [tên máy chủ] "cat> output.tar.gz"

tar czf - [thư mục] | ssh [tên người dùng] @ [tên máy chủ] tar xzf - -C [đích trên hộp từ xa]

0
Chuck