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à rsync
rấ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à -L
có 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 a
cũng nên sao chép b
, c
, c/foo
, d
, d/e
và d/e/foo
).
dirA/link
là 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/file
vàodest/dirB/file
vàdirA/link
đếndest/dirA/link
. Điều gì nếudirA/link
là một liên kết đến../../another_file
? Điều gì xảy ra, nói chung, nếudirA/link
trỏ đến một thư mục cao hơn trong cây thư mục?