Nó không cần phải được thực hiện bởi rsync, nhưng thật tuyệt khi không phải viết một kịch bản để làm điều này, và rsyncrất gần với những gì tôi muốn.
rsync -a(hoặc -l) có thể bảo tồn các liên kết tượng trưng, và -Lcó thể hủy bỏ các liên kết tượng trưng và sao chép nó như thể đó là tệp / thư mục bình thường. Tuy nhiên, có thể giữ liên kết tượng trưng và sao chép các tệp / thư mục mà các liên kết trỏ đến không?
Đây là một ví dụ. Nói rằng chúng tôi có hệ thống phân cấp thư mục này:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
và khi tôi làm rsync -aR dirA dest(hoặc một cái gì đó khác), tôi muốn có chính xác những thứ này xuất hiện trong dest:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
Điều này có thể với rsync? Cảm ơn bạn.
Giả sử các liên kết tượng trưng có đường dẫn tuyệt đối hoặc trỏ đến bên ngoài thư mục nguồn có thể bị bỏ qua.
a -> b, b -> c/foo, c -> d/e: yêu cầu bản sao acũng nên sao chép b, c, c/foo, d, d/evà d/e/foo).
dirA/linklà một liên kết tượng trưng../dirB/file, thì điều này nên được xử lý như sao chépdirB/filevàodest/dirB/filevàdirA/linkđếndest/dirA/link. Điều gì nếudirA/linklà một liên kết đến../../another_file? Điều gì xảy ra, nói chung, nếudirA/linktrỏ đến một thư mục cao hơn trong cây thư mục?