Chuyển hàng triệu tệp từ máy chủ này sang máy chủ khác


15

Tôi có hai máy chủ. Một trong số đó có 15 triệu tệp văn bản (khoảng 40 GB). Tôi đang cố gắng chuyển chúng sang một máy chủ khác. Tôi đã cân nhắc việc nén chúng và chuyển kho lưu trữ, nhưng tôi nhận ra rằng đây không phải là một ý tưởng hay.

Vì vậy, tôi đã sử dụng lệnh sau:

scp -r usrname@ip-address:/var/www/html/txt /var/www/html/txt

Nhưng tôi nhận thấy rằng lệnh này chỉ chuyển khoảng 50.000 tệp và sau đó kết nối bị mất.

Có giải pháp nào tốt hơn cho phép tôi chuyển toàn bộ bộ sưu tập các tập tin không? Tôi có nghĩa là sử dụng một cái gì đó như rsyncđể chuyển các tập tin không được chuyển khi mất kết nối. Khi một ngắt kết nối khác xảy ra, tôi sẽ gõ lại lệnh để truyền tệp, bỏ qua những cái đã được chuyển thành công.

Điều này là không thể scp, bởi vì nó luôn bắt đầu từ tập tin đầu tiên.

Câu trả lời:


33

Như bạn nói, sử dụng rsync:

rsync -azP /var/www/html/txt/ username@ip-address:/var/www/html/txt

Các tùy chọn là:

-a : enables archive mode, which preserves symbolic links and works recursively
-z : compress the data transfer to minimise network usage
-P : to display a progress bar and enables you to resume partial transfers

Như @aim nói trong câu trả lời của anh ấy, hãy chắc chắn rằng bạn có một dấu vết /trên thư mục nguồn (trên cả hai cũng tốt).

Thêm thông tin từ trang người đàn ông


1
Tôi đề nghị thêm -hcờ để sử dụng các đơn vị có thể đọc được. Và nếu bạn muốn có nhiều chi tiết hơn, bạn có một vài lựa chọn: -ivà / hoặc -v/ -vv.
nyuszika7h

2
Nhìn chung có rất ít lý do để không luôn luôn sử dụng rsync thay vì scp. Cách sử dụng cơ bản của nó là như nhau và nó cung cấp nhiều tính năng tiện dụng bổ sung.
pimlottc

nếu sshkhông phải là một tùy chọn cho bạn và bạn không cần hoặc không muốn mã hóa, bạn có thể thử tập lệnh của tôi s3.amazonaws.com/skaperen/rsend
Skaperen 28/03/2015

7

Chỉ cần sử dụng rsync trên ssh!

rsync -av username@ip:/var/www/html/txt /var/www/html/

Từ trang người đàn ông:

-a , - lưu trữ : Điều này tương đương với -rlptgoD. Đó là một cách nhanh chóng để nói rằng bạn muốn đệ quy và muốn bảo tồn hầu hết mọi thứ (với -H là một thiếu sót đáng chú ý). Ngoại lệ duy nhất cho sự tương đương ở trên là khi --files-from được chỉ định, trong trường hợp -r không được ngụ ý.

-v , - verbose : Tùy chọn này làm tăng lượng thông tin bạn được cung cấp trong quá trình chuyển. Theo mặc định, rsync hoạt động âm thầm. Một -v sẽ cung cấp cho bạn thông tin về những tập tin nào đang được chuyển và một bản tóm tắt ngắn gọn ở cuối. Hai tùy chọn -v sẽ cung cấp cho bạn thông tin về những tập tin nào bị bỏ qua và thêm một chút thông tin ở cuối. Nhiều hơn hai tùy chọn -v chỉ nên được sử dụng nếu bạn đang gỡ lỗi rsync.

Lưu ý cách tôi sử dụng dấu gạch chéo ở cuối thư mục - điều đó quan trọng .


Bạn có lẽ nên thêm nhiều thông tin về tầm quan trọng của dấu gạch chéo. Từ rsynctrang hướng dẫn: "Dấu gạch chéo trên nguồn thay đổi hành vi này để tránh tạo cấp độ thư mục bổ sung tại đích. Bạn có thể nghĩ về dấu / trên nguồn có nghĩa là" sao chép nội dung của thư mục này "trái ngược với" sao chép thư mục theo tên ", nhưng trong cả hai trường hợp, các thuộc tính của thư mục chứa được chuyển đến thư mục chứa trên đích."
nyuszika7h

... Và ý nghĩa của những lá cờ -av?
MrWhite

0

Sử dụng lftp, nó nhanh hơn nhiều so với rsync và tốt nhất để phản chiếu các trang web (nhiều tệp nhỏ). Nó cũng có thể chuyển song song bằng nhiều kết nối:

lftp -u username,password sftp://ip-address -e 'mirror --only-newer --no-dereference --parallel=5 /remote/path/ /destination/;quit'

Nếu một kết nối bị hỏng, nó sẽ kết nối lại và tiếp tục. Nếu bạn phá vỡ chuyển, nó sẽ bỏ qua các tập tin hiện có và tiếp tục.

http://lftp.yar.ru/


0

Một cách khác là bằng cách đặt một tệp tar (tùy chọn được nén) qua ssh:

tar -czf - ./* | ssh other.host.foo "cd /tmp; tar -xzf-"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.