Rsync -avzHP theo các liên kết cứng thay vì sao chép chúng dưới dạng liên kết cứng


13

Tôi sử dụng rsnapshot để tạo bản sao lưu hàng giờ / hàng ngày / hàng tuần / hàng tháng cho "công việc" của mình. Bây giờ tôi đang cố sao chép toàn bộ thư mục sao lưu vào ổ đĩa ngoài bằng rsync.

Tôi đã sử dụng lệnh / tham số này trong một phiên màn hình (vâng, rsync-Elim.txt nằm trong thư mục tôi chạy lệnh từ)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

Toàn bộ mọi thứ đang chạy trên QNAP TS-439, ổ đĩa trong là một đĩa đơn (không có RAID) được tạo thành EXT4, ổ đĩa ngoài được tạo thành EXT3.

Điều gì xảy ra là: Rupync theo dõi mọi liên kết cứng và sao chép tệp thực tế thay vì tạo lại liên kết cứng được cập nhật trên ổ đĩa ngoài. Tôi đã không nhận ra điều này ngay lập tức vì vậy ổ đĩa ngoài đã bị vứt đi với các bản sao xxx của cùng một tệp.

Những gì tôi muốn đạt được là: Sao chép toàn bộ cấu trúc tệp được tạo bởi rsnapshot vào ổ đĩa ngoài giữ các liên kết cứng để tiết kiệm dung lượng. Lưu ý: Điều này không nhất thiết phải được thực hiện bằng cách sử dụng rsync.

Cảm ơn ý tưởng và thời gian của bạn. Tôi đánh giá cao sự giúp đỡ của bạn, thời gian lớn.

Cập nhật: Tôi đã học được rằng rsnapshot không sử dụng liên kết tượng trưng, ​​nó sử dụng liên kết cứng nên giờ tôi sử dụng tùy chọn -H để duy trì cấu trúc liên kết cứng theo Rnapshot cho nhiều đích (hoặc duy trì cấu trúc liên kết cứng) nhưng nó vẫn không hoạt động ... Tôi đang thiếu gì ở đây?

Cập nhật 2: Tôi đã tìm thấy một ý kiến ​​/ tuyên bố khác về chủ đề này ở đây: rsync với --hard-links đóng băng Steven Thứ hai đề nghị không cố gắng đồng bộ hóa các cấu trúc tệp lớn có chứa các liên kết cứng, vì nó chiếm rất nhiều bộ nhớ, đây là một nhiệm vụ khó khăn đối với rsync. Vì vậy, có lẽ một giải pháp tốt hơn sẽ tạo ra một .img cấu trúc dữ liệu mà tôi đang cố gắng sao lưu. Bạn nghĩ sao?


Tôi đang làm chính xác như bạn! +1. Sẽ thử cách tiếp cận dd
mmalmeida

Câu trả lời:


10

Về mặt lý thuyết, tùy chọn (hoặc ) rsynccủa lệnh sẽ thực hiện những gì bạn đang cố gắng thực hiện, nói ngắn gọn: để tạo một bản sao của hệ thống tệp của bạn bảo tồn cấu trúc liên kết cứng của bản gốc. Như tôi đã đề cập trong câu trả lời của mình cho một câu hỏi tương tự khác , tùy chọn này chắc chắn sẽ thất bại một khi hệ thống tệp nguồn của bạn phát triển vượt quá một ngưỡng phức tạp liên kết cứng nhất định.-H--hard-links

Vị trí chính xác của ngưỡng đó có thể phụ thuộc vào RAM của bạn và tổng số liên kết cứng (và có thể là một số thứ khác), nhưng tôi đã thấy rằng không có điểm nào trong việc cố gắng xác định chính xác. Điều thực sự quan trọng là ngưỡng rất dễ vượt qua trong các tình huống trong thế giới thực và bạn sẽ không biết rằng mình đã vượt qua nó, cho đến ngày bạn cố gắng chạy một rsync -aHhoặc một cp -acuộc đấu tranh và cuối cùng thất bại .

Những gì tôi khuyên là đây: Sao chép hệ thống tệp được liên kết cứng của bạn dưới dạng một đơn vị, không phải là tệp. Đó là, sao chép toàn bộ phân vùng hệ thống tập tin dưới dạng một blob lớn. Có một số công cụ có sẵn để làm điều này, nhưng phổ biến nhất là dd.

Với phần mềm chứng khoán, NAS QNAP của bạn cũng đã ddđược tích hợp sẵn fdisk. Với fdisk, tạo một phân vùng trên ổ đĩa đích lớn nhất bằng phân vùng nguồn. Sau đó, sử dụng ddđể tạo một bản sao chính xác của phân vùng nguồn của bạn trên phân vùng đích vừa tạo.

Trong khi ddbản sao đang được tiến hành, bạn phải đảm bảo rằng không có gì thay đổi trong hệ thống tệp nguồn, vì sợ rằng bạn sẽ kết thúc với một bản sao bị hỏng ở đích. Một cách để làm điều đó là vào umountnguồn trước khi bắt đầu quá trình sao chép; một cách khác là gắn kết nguồn ở chế độ chỉ đọc.


Giả sử tôi không bao giờ sử dụng các liên kết cứng bên ngoài thư mục sao lưu rsnapshot, tôi vẫn sẽ gặp rắc rối chứ? Tôi thực sự thiếu không gian đĩa cứng nhưng muốn tạo bản sao lưu rsnapshot. Hiện tại đĩa của tôi đã đầy.
Sridhar Sarnobat

Tôi nghĩ rằng tôi nhấn vào tình huống bạn chỉ ra. Tôi có một thư mục sao lưu với nhiều ảnh chụp nhanh được tạo bằng rsync. Nó có nhiều tập tin với nhiều liên kết cứng. Tổng mức sử dụng đĩa khoảng 200G. Tôi đang sao chép nó sang một phân vùng khác bằng cách sử dụng 'rsync -avH'. Nhưng sau 4 (hoặc 5?) Ngày và đêm, quá trình sao chép vẫn đang chạy. Tôi đoán rsync hoàn toàn bị nhầm lẫn bởi tổng số liên kết cứng trong thư mục nguồn.
Quảng Đông

Trong Ubuntu 18.04, nó --hard-links(với một 's').
tộc

1

-l là cho các liên kết tượng trưng, ​​tại sao nó sẽ làm bất cứ điều gì cho các liên kết cứng?

(Xin lỗi, đây là câu trả lời và không phải là nhận xét, tôi chưa có quyền nhận xét và câu trả lời này cần phản hồi)

Một lưu ý khác nên là một nhận xét: đây có phải là tất cả phần cứng nguyên gốc hay bạn đang sử dụng VM, kết nối mạng?

Biên tập

bỏ qua bình luận trước đó của tôi về lý do tại sao bạn đang sử dụng liên kết cứng, tôi đã bỏ lỡ rsnapshotbình luận.

Sẽ rất hữu ích khi có một bài kiểm tra đầu tiên kiểm tra rsync giữa hai thư mục cục bộ đĩa cục bộ, sau đó đối với đĩa từ xa của bạn. Thử nghiệm nhỏ này cho thấy các -Htùy chọn wokrs như mong đợi. Các -itùy chọn cho lschương trình các inodes, do đó cho thấy rằng các liên kết đã được bảo tồn, không có thêm các bản sao.

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

Một thử nghiệm tiếp theo rsync -avzHP src/ host:/tmpđến một máy chủ từ xa vẫn duy trì các liên kết cứng


Bạn hoàn toàn đúng, sau một số nghiên cứu sâu hơn, tôi phát hiện ra rằng rsnapshot không sử dụng liên kết tượng trưng mà là liên kết cứng. Tôi cập nhật câu hỏi của tôi cho phù hợp. Vì vậy, giải pháp nên sử dụng -H và sao chép toàn bộ thư mục (như tôi làm) để bảo vệ cấu trúc liên kết cứng được xây dựng bởi rsnapshot nhưng nó vẫn không hoạt động. Khi tôi bắt đầu sao chép mọi thứ ra khỏi Daily.0 sẽ bị sao chép, không chỉ các tệp đã thay đổi. // Và vâng, tôi đang sử dụng Qnap TS-439 và Lacie Drive bên ngoài cho hoạt động này.
woerndl

Bạn có thể giảm vấn đề này xuống bằng cách có một thư mục nguồn kiểm tra và một thư mục đích kiểm tra chỉ với 2 tệp trong nguồn, được liên kết cứng với nhau không? Ngoài ra, làm thế nào để bạn xác định rằng liên kết không được xử lý chính xác và cuối cùng, tại sao lại sử dụng liên kết cứng, nếu bạn đọc văn bản dài -Htrong trang web, bạn có thể thấy rằng có một số thông báo, theo tôi sẽ nói, hãy thử để tránh xa các liên kết cứng ...
nhed

Tôi sẽ thiết lập một trường hợp thử nghiệm và cập nhật cho bạn. Cảm ơn bạn rất nhiều cho bạn ý tưởng cho đến nay.
woerndl

1

Đây là một cú đánh dài, nhưng nếu bạn không thể tìm thấy giải pháp khác, tôi khuyên bạn nên thử định dạng ổ USB là EXT4. Có lẽ đây có thể là vấn đề: https://ormszilla.samba.org/show_orms.cgi?id=7670

Được cung cấp đủ các liên kết cứng trong thư mục nguồn và khối lượng đích đủ nhỏ, sao chép bằng rsync - liên kết có thể thất bại. Rsync thất bại bằng cách làm cạn kiệt số lượng liên kết cứng tối đa trên đích <...> vấn đề thực sự không phải là rsync mà là hệ thống tệp cơ bản.


Cảm ơn bạn đã tham gia vào vấn đề của tôi! Hình như đây là samba liên quan. Ổ đĩa của tôi được gắn trực tiếp vào NAS.
woerndl

1
Xin chào, không có vấn đề này không liên quan đến Samba. Đây là ngôi nhà của trang web rsync: rsync.samba.org
Motsel

0

Bạn đã thử thêm -ltùy chọn?

Tôi biết trang người đàn ông nói rằng nó được bao gồm trong -anhưng trang người đàn ông không phải lúc nào cũng chính xác 100%.


Cảm ơn phản hồi của bạn. Tôi đã phải cập nhật câu hỏi của mình: Rsnapshot không sử dụng symlink mà là hardlink để xây dựng cấu trúc sao lưu gia tăng của nó. Vì vậy, dù sao tôi cũng sẽ không giúp, nhưng -H nên, thật không may, cũng không hoạt động.
woerndl
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.