ฉันคิดว่าการเก็บสำเนาไฟล์ทั้งหมดในแล็ปท็อปของคุณไม่ใช่ตัวเลือก มิฉะนั้นจะง่ายขึ้นมาก
เครื่องมือที่เหมาะสมที่นี่เป็นเครื่องมือควบคุมเวอร์ชัน แต่ฉันรู้ว่าหากผู้ใช้ทุกคนมีความซับซ้อนทางเทคนิคขั้นต่ำการได้รับเครื่องมือการควบคุมเวอร์ชันไม่ใช่ข้อเสนอแนะที่สมจริง และถึงแม้ว่าคุณจะต้องเลือกสิ่งที่คุณเช็คเอาต์บนแล็ปท็อปอย่างระมัดระวัง
คุณยังอาจใช้การควบคุมเวอร์ชัน บนเครื่องที่ใช้ร่วมกันให้ตรวจสอบไฟล์ทั้งหมดของคุณและปล่อยให้ไฟล์ของผู้อื่นอยู่คนเดียว ทำการเช็คเอาต์แยกต่างหากบนแล็ปท็อปของคุณ ยอมรับและตรวจสอบทุกครั้งที่คุณสลับเครื่อง ยิ่งฉันคิดถึงมันมากเท่าไรฉันก็ยิ่งชอบตัวเลือกนี้มากขึ้น: มันไม่จำเป็นต้องมีการเข้ารหัสหรือแม้แต่การเขียนสคริปต์ที่บอบบาง
คุณทำข้อมูลให้ตรงกันแบบสองทาง Rsync ไม่ดีในเรื่องนี้: หากคุณลืมที่จะเรียกใช้หรือรันโดยไม่ตั้งใจในทิศทางที่ผิดคุณอาจสูญเสียงานโดยไม่มีการเตือน พร้อมเพรียงเป็นเครื่องมือที่ดีสำหรับการซิงโครไนซ์แบบสองทาง: มันซิงโครไนซ์แบบสองทิศทางเสมอและมันจะบ่นหากไฟล์มีการเปลี่ยนแปลงทั้งสองด้าน มันเป็นโอเพ่นซอร์สและรวมเข้ากับทั้งแพลตฟอร์ม unix และ Windows
น่าเสียดายที่ความพร้อมเพรียงไม่มีตัวเลือกในการข้ามไฟล์โดยเจ้าของ คุณสามารถสร้างรายชื่อที่ไม่มีfind -user
แต่จะได้รับยุ่งและมีสภาพการแข่งขันที่ถ้าคนอื่นเพิ่มหรือลบไฟล์ระหว่างการทำงานของfind
และเรียกใช้ของหรือunison
rsync
คุณสามารถแก้ไข rsync หรือพร้อมเพรียงเพื่อเพิ่มตัวเลือกในการละเว้นไฟล์ตามข้อมูลเมตาของพวกเขา ฉันเพิ่งดูแหล่งที่มาอย่างรวดเร็วและในทั้งสองกรณีรหัสการยกเว้นจะเชื่อมโยงกับสตริงอย่างแน่นหนาไม่ใช่ไปยังรายการไดเรกทอรี มันดูเป็นไปได้ แต่มันไม่ใช่แพตช์เล็ก ๆ
คุณสามารถสร้างมุมมองของระบบไฟล์ที่มีเฉพาะไฟล์ของคุณ ฉันไม่มีวิธีแก้ปัญหาที่สมบูรณ์และไร้รอยต่อ แต่นี่คือแนวคิดสองสามข้อในการเริ่มต้น
หากเครื่องที่ใช้ร่วมกันรองรับการเชื่อมโยงอย่างหนัก (ทุกสิ่งที่ทำและ Windows ทำมาตั้งแต่ NT4 ตราบใดที่คุณใช้ NTFS) มันง่ายพอที่จะสร้างสำเนาของที่เก็บที่มีฮาร์ดลิงก์ของไฟล์ของคุณเท่านั้น:
cd /shared/repository
find . -user "$USER" -exec sh -c 'mkdir -p "/my/view/${0%/*}" &&
ln "$0" "/my/view/$0"' {} \;
หรือด้วย zsh:
autoload zmv
zmv -L -Q '/shared/repository/(**/)(*)(u$UID)' "/my/view/$1$2"
คุณจะต้องระมัดระวังไม่ทำลายฮาร์ดลิงก์เมื่อทำการแก้ไขหรือซิงโครไนซ์ ฉันไม่รู้ว่า rsync และพร้อมเพรียงกันจะรับมือได้อย่างไร หลังจากการสร้างครั้งแรกไฟล์ในพื้นที่เก็บข้อมูลที่ใช้ร่วมกันที่คุณเป็นเจ้าของและมีจำนวนลิงค์ 1 ที่จะถูกลบและไฟล์ในมุมมองของคุณที่มีจำนวนลิงค์ 1 จะเชื่อมโยงในพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน ทั้งหมดนี้ค่อนข้างซุ่มซ่ามและฉันยินดีรับข้อเสนอแนะเพื่อการปรับปรุง
หากเครื่องที่ใช้ร่วมกันรองรับFUSEคุณสามารถใช้มันเพื่อสร้างมุมมองสดของที่เก็บที่ใช้ร่วมกันที่มีเฉพาะไฟล์ของคุณ ฉันไม่รู้ระบบไฟล์ FUSE ใด ๆ ที่มีอยู่ที่สามารถทำได้ แต่bindfsก็เข้าใกล้ (ฉันไม่ได้ดูรหัสเพื่อประเมินความยากในการเขียนโค้ด)
คุณสามารถใช้LD_PRELOAD
เพื่อแทนที่readdir
(หรือเทียบเท่า Windows) เมื่อใช้ rsync หรือพร้อมเพรียงเพื่อที่ว่ามันจะส่งคืนไฟล์ที่คุณเป็นเจ้าของเท่านั้น