rsync theo liên kết và sử dụng đường dẫn tái tạo của tệp mà liên kết trỏ đến trong mệnh


0

Tôi có một thư mục của các liên kết tượng trưng A / trỏ đến các tệp thực tế trong nội dung dir /.

Symlink trong A / có thể bị xóa nhưng các tệp trong nội dung / không bao giờ bị xóa.
Ví dụ A / trông giống như:

A/
 --B/ 
   --link1 -> contents/file1.txt<br/>
 --C/
   --link2 -> contents/file3.txt<br/>

nội dung / trông như:

contents/
  --file1.txt
  --file2.txt
  --file3.txt
  --file4.txt

Vì vậy, các tập tin trong nội dung có thể không được liên kết bởi bất cứ ai. Tôi muốn sử dụng rsync để đồng bộ hóa cả hai thư mục, nhưng chỉ chuyển các tệp thực sự được trỏ bởi các liên kết. Tức là chuyển file1.txt và file3.txt.
Tôi muốn sử dụng rsync để chuyển các liên kết trong liên kết A / sau và thay thế tên liên kết trong số phận bằng đường dẫn của tệp được trỏ đến.

rsync --link A/* dest/ 

Và kết thúc với:

dest/
  --contents/
    --file1.txt
    --file3.txt

Cảm ơn

Câu trả lời:


0

Tôi không thể làm điều này hoàn toàn với rsync, mà là với sự kết hợp để tìm và rsync. Đầu tiên tôi tạo một ảnh chụp nhanh của nội dung dir bằng cách thực hiện

find  A/ -type l -exec readlink  {} \; 

Sau đó, tôi đã tạo một thư mục content.snapshot trong đó tôi đã tạo một liên kết tượng trưng trỏ đến tệp theo nội dung trong thư mục content.snapshot cho mỗi tệp được trả về bởi lệnh find.

Cuối cùng, tôi đã xác nhận thư mục content.snapshot thay vì thư mục nội dung. Kích hoạt xóa tệp và liên kết theo sau trong lệnh rsync.

Cấu trúc dir trông như thế này:

contents/
  --file1.txt
  --file2.txt
  --file3.txt
  --file4.txt

contents.snapshot/
  --contents/
    --file1.txt -> ../../contents/file1.txt
    --file3.txt -> ../../contents/file3.txt
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.