Bảo tồn các liên kết đích hiện có với rsync


9

Tôi đang sử dụng rsync (1) để cập nhật kho lưu trữ debian cục bộ. Gần đây, đĩa tôi đang sử dụng để lưu trữ nó bắt đầu cạn kiệt dung lượng, vì vậy tôi quyết định sử dụng symlink để cho phép tôi chuyển một số thư mục sang một đĩa có kích thước tương tự khác.

Thật không may, có vẻ như rsync đang xóa các liên kết tượng trưng và nạp lại đĩa gần đầy. Sau một số tìm kiếm, tôi phát hiện ra --keep-dirlinkstùy chọn rsync, có vẻ như được thiết kế riêng để khắc phục vấn đề của tôi.

Chỉ có nó không. Các liên kết tượng trưng trên mục tiêu vẫn đang bị xóa.
Đây là lệnh rsync của tôi:

rsync --recursive --keep-dirlinks --links --hard-links --times --verbose \
 --delete --delete-excluded $EXCLUDE $SOURCE_EXCLUDE \
 $RSYNC_HOST::$RSYNC_DIR/pool/ $TO/pool/

Các EXCLUDE mở rộng ra để loại bỏ một số lượng lớn các kiến ​​trúc mà tôi không quan tâm, dọc theo dòng --exclude binary-alpha/ --exclude disks-alpha .... Trước khi rsync ra mắt, thư mục pool của tôi trông như thế này:

lrwxrwxrwx  1 root root   23 2014-09-22 13:58 contrib -> /u2/debian/pool/contrib
drwxrwxr-x 62 root root 4096 2012-04-09 03:02 main
lrwxrwxrwx  1 root root   24 2014-09-22 13:58 non-free -> /u2/debian/pool/non-free

Khi rsync khởi động, tôi nhận được điều này:

receiving incremental file list
deleting non-free
deleting contrib
./
contrib/
contrib/a/

Và như vậy, và các liên kết tượng trưng được thay thế bằng các thư mục chứa đầy các tệp.

Có một số tùy chọn rsync khác can thiệp vào --keep-dirlinks? Những cái tôi không thể kết hợp? Hay đó là thứ tự của các lựa chọn gây ra vấn đề của tôi?

Câu trả lời:


7

Các tùy chọn --delete--delete-excludedcan thiệp vào kế hoạch của bạn, vì họ nhận thấy rằng liên kết tượng trưng không có trên nguồn và do đó xóa nó.

Điều này chỉ xảy ra khi bạn yêu rsynccầu sao chép toàn bộ thư mục với source/ targetký hiệu (dấu gạch chéo sau nguồn). Nếu bạn sử dụng source/* targetthay thế, shell sẽ mở rộng danh sách các tệp và thư mục cần sao chép và điều này sẽ không xảy ra (nhưng hãy thử --dry-runtrước).

Tuy nhiên, thay vì thiết lập dễ vỡ này, tôi khuyên bạn nên kết hợp hai đĩa với sự trợ giúp của LVM để tạo thành một khối lượng lớn không cần loại mánh khóe này.


Cảm ơn! Tôi đã thay đổi kịch bản và nó dường như đang hoạt động. Điều này sẽ cho tôi một ít thời gian - đĩa vẫn sẽ có xu hướng lấp đầy, nhưng tôi có thời gian để thay đổi mọi thứ. Bạn đã đúng khi kết hợp cả hai với LVM. Tôi đã xem xét nó, nhưng kéo chân tôi vì điều đó có nghĩa là di chuyển mọi thứ và sau đó di chuyển chúng trở lại. Tuy nhiên, tốt hơn sớm hơn so với sau này, tôi đoán.
unkilbeeg

Tôi gặp vấn đề tương tự đã được giải quyết bằng cách sử dụng --keep-dirlinks mà không có tùy chọn -a tôi đang sử dụng. "Khó chịu" nhỏ như đối với đoạn thứ ba, các hệ thống tệp tôi đang sử dụng là các đĩa SAN "64 T byte". Mặc dù có thể kết hợp nhiều bội số thành lớn hơn, nhưng 256 ổ terabyte, tôi hy vọng người quản trị có lý do cho kích thước chúng tôi có. Đôi khi những gì trông giống như "mánh khóe" chỉ là tìm ra cách sống với những gì bạn có.
dùng1683793

Giải pháp cuối cùng của tôi là phần cứng mới. Máy ban đầu đủ cũ để chỉ hỗ trợ các ổ đĩa IDE và ổ đĩa lớn nhất bạn có thể nhận được trong những ngày đó là 512G.
unkilbeeg
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.