หนึ่งโฟลเดอร์ที่มีที่ตั้งสองแห่งบน Ubuntu 18.04


10

ฉันต้องการมีโฟลเดอร์เดียวกันที่ตำแหน่งต่างกันสองแห่งใน Ubuntu ของฉัน หากฉันอัปเดตบางอย่างในที่หนึ่งก็ควรได้รับการอัปเดตในตำแหน่งอื่น

ฉันจะทำให้มันเกิดขึ้นได้อย่างไร


8
สถานที่ทั้งสองนั้นจำเป็นต้องมีอยู่จริงหรือไม่ (เช่นเดียวกับการเพิ่มพื้นที่ว่างเป็น 2 เท่า) หรือเป็นลิงก์
Rinzwind

19
A symbolic linkเป็นทางออกที่ง่ายที่สุดสำหรับความต้องการของคุณและไม่ขึ้นอยู่กับสิทธิ์ของ superuser man lnสำหรับข้อมูลเพิ่มเติม.
เสร็จสิ้น

คำตอบ:


16

ใช้ผูกม้า

สมมติว่าคุณมีไดเรกทอรีที่มีอยู่/home/pandey/originalและต้องการที่จะสะท้อนให้มัน/home/pandey/mirrorเพื่อให้ทุกอย่างที่คุณทำในทั้งของพวกเขาจะทำโดยอัตโนมัติในอีกทางหนึ่งเช่นกัน

สิ่งนี้ไม่ต้องการการซิงค์หรือคัดลอกระหว่างสองไดเรกทอรี การเชื่อมโยงเมานต์เป็นเพียงอีกมุมมองหนึ่งของไดเรคทอรีดั้งเดิม

  1. สร้างไดเรกทอรีใหม่ (ในฐานะผู้ใช้ของคุณ) /home/pandey/mirror:

    mkdir /home/pandey/mirror
    
  2. ผูกติดไดเรกทอรีเดิมไปยังเส้นทางที่สร้างขึ้นใหม่ สิ่งนี้ต้องการการเข้าถึงรูต:

    sudo mount --bind /home/pandey/original /home/pandey/mirror
    
  3. สนุก.

หากต้องการยกเลิกสิ่งนี้เพียงแค่

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

ดูเพิ่มเติมคำถามนี้และที่โดดเด่นคำตอบของตนเองไปบน stackexchange เกี่ยวกับการผูกม้า


3
+1, ด้วยวิธีนี้จะเร็วกว่าวิธีที่ฉันเสนอ
Codito Ergo ผลรวม

13
Would'd cd /home/pandey; ln -s original mirrorมีผลเช่นเดียวกันและไม่จำเป็นต้องมีสิทธิ sudo?
เสร็จสิ้น

19
ใช่ฉันสงสัยว่าทำไมผู้คนถึงเสนอโซลูชั่นวงเวียนเหล่านี้ในขณะที่ฟังดูเป็นกรณีการใช้งานแบบคลาสสิกสำหรับการเชื่อมโยง sym แบบง่าย ๆ ข้อดีคืออะไร เท่าที่ฉันเห็นว่าไม่มีข้อได้เปรียบที่ระบุไว้ในคำถามที่อ้างถึงดูเหมือนจะใช้ที่นี่
Voo

5
@ doneal24 ฉันยอมรับ: การเชื่อมโยงสัญลักษณ์มีผลเหมือนกันจากมุมมองที่ใช้งานได้จริงและไม่ต้องการการเปลี่ยนแปลงระบบพื้นฐานและสิทธิ์ผู้ดูแลระบบ
วานาเดียม

2
คำถามที่เชื่อมโยงกับการผูกติดมีรายการที่ดีของกรณีการใช้งานที่เป็นไปได้ เพียงต้องการพา ธ ที่มีชื่ออื่นไปยังไดเรกทอรีไม่ใช่หนึ่งในนั้น
Dubu

44

ตามที่ระบุไว้ในความคิดเห็น แต่ไม่ใช่คำตอบที่เหมาะสม:

ในหลายกรณีลิงก์สัญลักษณ์เป็นทางออกที่ง่ายที่สุด

คุณสามารถสร้างมันได้อย่างง่ายดายบนบรรทัดคำสั่ง (ใช้lnคำสั่งกับ-sพารามิเตอร์) คุณสามารถสร้างได้อย่างง่ายดายโดยใช้ GUI เช่นกัน: เบราว์เซอร์ไฟล์ส่วนใหญ่ (nautilus, ... ) ให้คุณสร้างลิงก์สัญลักษณ์โดยใช้การลากและวาง (เช่นการย้ายไฟล์) ในขณะที่กดปุ่มตัวปรับเปลี่ยนค้าง (CTRL + SHIFT)

ตัวอย่างการใช้งานบรรทัดคำสั่ง:

$ 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

คุณสามารถทำได้โดยการตั้งค่างาน crontab:

  • เปิดเทอร์มินัลแล้วพิมพ์ crontab -e
  • กดiเพื่อเปิดใช้งานโหมดแทรกของโปรแกรมแก้ไข vim ของคุณ

คุณสามารถป้อนคำสั่งที่คุณต้องการทำที่นั่นเพื่อให้คุณสามารถคัดลอกไฟล์ทั้งหมดของโฟลเดอร์ในโฟลเดอร์อื่น ตัวอย่างเช่นหากคุณต้องการคัดลอกไฟล์ทั้งหมด/home/user/folder_nameไปที่/home/user/publicคุณควรแทรกคำสั่งนี้ในcrontabไฟล์ของคุณ:

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

นี่จะเป็นการคัดลอกไฟล์ทั้งหมดในช่วงเวลาที่ต้องการ หากคุณต้องการคัดลอกไฟล์ทั้งหมดเวลา 21:30 น. ทุกวันการแก้ไขของคุณควรเป็น:

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับcrontabดูที่นี่man crontabหรือการใช้งาน


ฉันอาจจะใช้ผูกติดเป็น @PerlDuck ให้เป็นวิธีที่ง่ายและบำรุงรักษาที่จะทำ ฉันจะไม่ใช้ cronjobs เนื่องจากอาจทำให้เกิดปัญหาประสิทธิภาพการทำงานทั้งหมดในเครื่องของคุณหากคุณทำการซิงค์โฟลเดอร์ไปยังหลาย ๆ ที่และไฟล์ในโฟลเดอร์แรกนั้นมีขนาดใหญ่หรือมาก บริษัท ของฉันใช้วิธีนี้เพื่อเลียนแบบพฤติกรรมของ Dropbox / Drive และตอนนี้เราถึงไฟล์จำนวนมากบางส่วนของพวกเขามีขนาดเป็น GB วิธีการแก้ปัญหาก็ไม่ได้ปรับขนาดอีกต่อไป
nonameable

2
นี่คือสองไดเรกทอรีไม่ใช่หนึ่ง
โกรธ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.