tiếp tục sao chép tập tin linux


9

Làm cách nào để tôi tiếp tục một bản sao của một tệp lớn trong linux? Tôi có một tệp khổng lồ (gigabyes máy chủ) được sao chép một phần vào ổ đĩa mạng và phải mất một thời gian dài và nó đã được thực hiện trước khi hoạt động sao chép bị dừng do sự cố mạng hiện đã được khắc phục. Làm thế nào để tôi tiếp tục sao chép tập tin. Tôi không muốn một tập lệnh không hiệu quả và ecp không hoạt động (dường như nó không hoạt động đối với các tệp lớn).

Câu trả lời:


4

Tôi sẽ thử rsync -a /from/file /dest/file.


1
và trong khi chúng ta đang nói về rsync, lưu ý rằng bạn có thể sao chép trực tiếp vào bất kỳ máy từ xa nào [hỗ trợ SSH] bằng cách sử dụng rsync -az -e ssh / from / file user@dest.ation: / full / Dest / path
Mikeage

2
ồ chạy rsync như thế mà không có bất kỳ tùy chọn nào sẽ xóa / Dest / file và truyền lại toàn bộ. Làm thế nào điều này đã được bỏ phiếu lên?
Justin

1
Làm thế nào để bảo quản các thuộc tính tệp (-a) giúp đỡ? Điều này có nên - ứng dụng?
Malvineous

3

Nếu bạn biết rằng bạn chỉ cần thêm vào tệp cục bộ và không muốn sử dụng rsync (có thể mất nhiều thời gian để tính toán tổng kiểm tra), bạn có thể sử dụng curl. Ví dụ: nếu bạn có một tệp lớn trên thanh USB có thể tháo rời chậm được gắn tại /media/CORSAIR/somefile.datvà chỉ một nửa trong số đó nằm trong thư mục hiện tại, để tiếp tục:

curl -C - -O "file:///media/CORSAIR/somefile.dat"


Cảm ơn về mẹo này, tôi đã phải sử dụng mẹo này vì tôi đã sao chép từ máy chủ Windows SMB (vì vậy không có rsync) khi mất kết nối chậm và tôi không muốn tải xuống 500MB từ đầu.
MiKy

2

Có rsync là con đường để đi. Đối với tôi, chúng tôi đã chuyển dữ liệu 100 + GB qua rsync + ssh. Nếu bạn đang tìm kiếm một bản sao lưu dự phòng thực sự, hãy đảm bảo rằng bạn sử dụng -atùy chọn (lưu trữ) để bảo toàn các thuộc tính tệp (thời gian, chủ sở hữu, perms, v.v.)

host1> rsync -aP file user@host2:/path/to/new/dir/

Nó cũng hữu ích để sao chép các tệp lớn có thể thay đổi trong quá trình di chuyển. Bạn có thể tải trước dữ liệu đến đích và một khi đã sẵn sàng cho bản sao cuối cùng, hãy thực hiện lại nhưng chỉ trong một phần nhỏ thời gian. Bạn có thể tiết kiệm thời gian chết thực tế bằng cách sử dụng rsync để tiềm năng đầy đủ của nó.

Sử dụng PS v(verbose) có thể làm chậm quá trình chuyển nhiều tệp.


2

Lệnh bạn muốn sẽ là một cái gì đó như

rsync -v --append /path/to/afile /mnt/server/dest/afile

trừ khi bạn có thể truy cập máy chủ qua ssh và chạy rsync theo cách đó, trong trường hợp đó, lệnh FlyingFish đưa ra là tốt nhất.


0

rsync chỉ tốt nếu bạn có rsync trên máy chủ đích. Trong trường hợp đó, nó thực sự là giải pháp tốt nhất.

Nhưng không thì khác. Vì quan điểm của rsync là chỉ sao chép các phần đã thay đổi trong các tệp lớn, nên giả sử các phần đã thay đổi này có thể ở bất kỳ đâu trong tệp. Điều này có nghĩa là nó sẽ kiểm tra tất cả các khối đã được sao chép. Nếu bạn không có rsync ở đầu xa, thì rsync cục bộ của bạn sẽ bắt đầu bằng cách đọc lại mọi thứ đã được chuyển.

Nếu máy nguồn của bạn có máy chủ web hoặc ftp, bạn có thể sử dụng wget từ máy chủ đích với tùy chọn "--continue". (hoặc cuộn tròn với tùy chọn "--continue-at [- | size]").

Nếu máy đích của bạn có máy chủ FTP, bạn có thể sử dụng cuộn tròn trên máy nguồn với tùy chọn --append.

Như một phương sách cuối cùng, bạn có thể sử dụng dd với các đối số "bs =" (kích thước khối), "Skip =" và "seek =". Ví dụ:

Giả sử bạn sẽ có thể sử dụng các khối 2048 byte. Nếu tệp đích của bạn hiện là 2'048'000'000 byte (2 GB), thì đó là 1'000'000 khối 2048 byte. Để nối phần còn lại của tệp nguồn của bạn vào đích, bạn có thể

dd if = source_file of = Destination_file bs = 2048 bỏ qua = 1000000 tìm kiếm = 1000000

Bạn có thể sử dụng kích thước khối lớn hơn để cải thiện tốc độ truyền. Chỉ cần nhớ chỉ định kích thước khối với bs = và giá trị được cung cấp để bỏ qua và tìm kiếm nằm trong khối chứ không phải theo byte.


Những gì bạn nói về rsync là sai. man rsync, đọc những gì tùy chọn --append làm.
Justin
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.