Một thư mục có hai vị trí khác nhau trên Ubuntu 18.04


10

Tôi muốn có cùng một thư mục tại hai vị trí khác nhau trong Ubuntu của mình. Nếu tôi cập nhật một cái gì đó trong một, nó cũng sẽ được cập nhật ở vị trí khác.

Làm thế nào tôi có thể làm cho nó xảy ra?


8
2 vị trí đó có cần phải là vật lý (như trong 2 chiếm không gian) hoặc chúng có thể là liên kết không?
Rinzwind

19
A symbolic linklà giải pháp đơn giản nhất cho yêu cầu của bạn và không phụ thuộc vào đặc quyền siêu người dùng. man lnđể biết thêm thông tin.
doneal24

Câu trả lời:


16

Sử dụng gắn kết gắn kết .

Giả sử bạn có một thư mục hiện có /home/pandey/originalvà muốn phản chiếu nó để /home/pandey/mirrormọi thứ bạn làm trong một trong số chúng cũng được thực hiện tự động trong thư mục kia.

Điều này không yêu cầu bất kỳ đồng bộ hóa hoặc sao chép giữa hai thư mục. Một ràng buộc gắn kết chỉ là một cái nhìn vào thư mục gốc và những gì xảy ra trong một cũng xảy ra trong kia.

  1. Tạo (với tư cách là người dùng của bạn) thư mục mới /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. bind-mount thư mục gốc vào đường dẫn vừa tạo. Điều này đòi hỏi quyền truy cập root:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. Thưởng thức.

Để hoàn tác điều này, chỉ cần

sudo umount /home/pandey/mirror
rmdir /home/pandey/mirror

Xem thêm câu hỏi này và tự trả lời nổi bật của nó trên stackexchange về gắn kết gắn kết .


3
+1, Chắc chắn cách này nhanh hơn cách tôi đề xuất;
Codito ergo sum

13
Sẽ cd /home/pandey; ln -s original mirrorcó tác dụng tương tự và không yêu cầu quyền sudo?
doneal24

19
Vâng tôi đang tự hỏi tại sao mọi người lại đề xuất các giải pháp bùng binh này trong khi điều này nghe có vẻ như là một trường hợp sử dụng cổ điển cho một liên kết sym đơn giản. Lợi thế là gì? Theo như tôi có thể thấy không có lợi thế nào được liệt kê trong câu hỏi được tham chiếu dường như được áp dụng ở đây.
Voo

5
@ doneal24 Tôi đồng ý: liên kết tượng trưng có tác dụng tương tự từ quan điểm thực tế và không yêu cầu thay đổi hệ thống cơ bản và đặc quyền của quản trị viên.
vanadi

2
Câu hỏi được liên kết trên các liên kết gắn kết có một danh sách tốt các trường hợp sử dụng có thể. Chỉ cần một đường dẫn có tên khác đến một thư mục không phải là một trong số họ.
Dubu

44

Như đã chỉ ra trong các ý kiến ​​nhưng không phải là một câu trả lời thích hợp:

Trong nhiều trường hợp, một liên kết tượng trưng là giải pháp dễ nhất.

Bạn có thể tạo chúng dễ dàng trên dòng lệnh (sử dụng lnlệnh với -stham số). Bạn cũng có thể tạo chúng dễ dàng bằng GUI: Hầu hết các trình duyệt tệp (nautilus, ...) cho phép bạn tạo một liên kết tượng trưng bằng cách kéo và thả (như để di chuyển tệp) trong khi giữ phím điều chỉnh (CTRL + SHIFT).

Ví dụ cho việc sử dụng dòng lệnh:

$ mkdir first_dir
$ ln -s ./first_dir ./second_dir
$ ls 
first_dir  second_dir

$ touch ./first_dir/test_1
$ touch ./second_dir/test_2

$ ls ./first_dir 
test_1  test_2

$ ls ./second_dir
test_1  test_2

2

Bạn có thể làm điều đó bằng cách đặt một công việc crontab:

  • Mở terminal của bạn và gõ crontab -e
  • Nhấn iđể kích hoạt chế độ chèn của trình soạn thảo vim của bạn.

Bạn có thể nhập lệnh bạn muốn được thực hiện ở đó, vì vậy bạn có thể sao chép tất cả các tệp của thư mục trong thư mục khác. Ví dụ, nếu bạn muốn sao chép tất cả các file trong /home/user/folder_nameđể /home/user/publicbạn nên chèn lệnh này trong thư mục crontabfile:

rsync /home/user/folder_name -r /home/user/public

Điều này sẽ sao chép tất cả các tập tin trong khoảng mong muốn. Nếu bạn muốn sao chép tất cả các tệp vào lúc 21:30 mỗi ngày, chỉnh sửa của bạn phải là:

 30 21 * * *  rsync /home/user/folder_name -r /home/user/public

Để biết thêm thông tin về crontab xem tại đây hoặc sử dụng man crontab.


Tôi có thể sẽ sử dụng các liên kết gắn kết như @PerlDuck, được đưa ra là một cách dễ dàng và duy trì để làm điều đó. Tôi sẽ không sử dụng cronjobs vì điều này có thể dẫn đến tất cả các vấn đề về hiệu suất trên máy của bạn nếu bạn kết thúc việc đồng bộ hóa một thư mục vào nhiều vị trí và các tệp trong thư mục đầu tiên rất lớn hoặc nhiều. Công ty của tôi đang sử dụng phương pháp này để mô phỏng hành vi Dropbox / Drive và bây giờ chúng tôi đã đạt được số lượng lớn tệp, một số tệp có kích thước GB, giải pháp đơn giản là không mở rộng nữa.
thay đổi vào

2
Đây là hai thư mục, không phải một.
cơn thịnh nộ
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.