ฉันจะลบไฟล์ Time Machine โดยใช้ commandline ได้อย่างไร


68

ฉันต้องการลบไฟล์ / ไดเรกทอรีบางส่วนจาก Time Machine Partition โดยใช้rmแต่ไม่สามารถทำได้ ฉันค่อนข้างแน่ใจว่าปัญหาเกี่ยวข้องกับการขยายการควบคุมการเข้าถึงคุณสมบัติบางอย่างในไฟล์ในการสำรองข้อมูล แต่ไม่ทราบวิธีการแทนที่ / ปิดใช้งานพวกเขาเพื่อให้rmทำงาน ตัวอย่างข้อผิดพลาดที่ฉันได้รับคือ:

% sudo rm -rf Backups.backupdb/MacBook/Latest/MacBook/somedir
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir: Directory not empty
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir/somefile: Operation not permitted

มีสาเหตุหลายประการที่ฉันไม่ต้องการใช้ Time Machine GUI หรือ Finder สำหรับสิ่งนี้ หากเป็นไปได้ฉันต้องการรักษาระดับการป้องกันเพิ่มเติมสำหรับไฟล์อื่น ๆ ทั้งหมด (ฉันไม่ต้องการปิดการใช้งานทั่วโลกยกเว้นว่าฉันจะเปิดใช้งานอีกครั้งเมื่อฉันทำงานเสร็จแล้ว)


ฉันสนิทกันมากขึ้น ก่อนอื่นฉันต้องปิดการใช้งาน ACL บนดิสก์ Time Machine ของฉัน ก่อนหน้านี้หนึ่งจะใช้ fsaclctl ทำเช่นนี้ แต่ Snow Leopard ไม่รวมถึงนี้ ฉันจับสำเนาไบนารีจาก OSX เวอร์ชั่นเก่ากว่าและรันสิ่งนี้:% sudo fsaclctl -p / Volumes / tmvol -d ฉันพยายามใช้ "sudo rm -rf" เพื่อลบไดเรกทอรี แต่ก็ยังมีปัญหาเกี่ยวกับ บางไฟล์ (แม้ว่าคนอื่นหายไป) มันล้มเหลวในซอฟต์ลิงค์ ที่แปลกมาก. ในด้านบวกการเชื่อมโยงใช้พื้นที่เกือบไม่มี ในด้านลบฉันยังคงมีไดเรกทอรีติดอยู่รอบ ๆ
ทิม

ดูเหมือนว่าคำตอบที่ได้รับการยอมรับเป็นอันตรายมากเมื่อมีการลบภาพรวมหรือโฟลเดอร์ในภาพรวมเช่นคุณrm -r Backups.backupdb/MacBook/Latest/MacBook/somedir; หากคุณเห็นด้วยโปรดยอมรับคำตอบของ Arne?
Arjan

คำตอบ:


115

หากต้องการแก้ไขข้อผิดพลาด "การดำเนินการที่ไม่อนุญาต" ให้ใช้โปรแกรม "บายพาส" Time Machine Safety Net :

sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass rm -rfv /Volumes/[disk]/Backups.backupdb/[path]

ใน 10.8 Mountain Lion บายพาสถูกย้ายไปที่ 'ผู้ช่วยเหลือ':

/System/Library/Extensions/TMSafetyNet.kext/Helpers/bypass

ใน 10.10 โยเซมิตี, บายพาสย้ายมาที่นี่:

/System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass

ระวังเมื่อใช้นี้เพื่อลบภาพรวมเฉพาะ: เป็นเวลาที่เครื่องใช้เชื่อมโยงอย่างหนักใช้rm -rในโฟลเดอร์อาจส่งผลกระทบต่อภาพรวมเก่าและใหม่ของเครื่องเดียวกัน (ดูคำตอบอื่น ๆ ที่อ้างถึงการtmutil deleteลบภาพรวมที่เฉพาะเจาะจงอย่างปลอดภัย) การใช้rmเพื่อลบภาพรวมทั้งหมดสำหรับเครื่องเดียวก็โอเค และกำลังใช้rmเพื่อลบไฟล์เฉพาะซึ่งจะลบไฟล์ที่ลิงก์อย่างหนักจากสแน็ปช็อตที่คุณระบุเท่านั้นสมมติว่าไฟล์นั้นไม่ได้อยู่ในไดเรกทอรีที่มีการเชื่อมโยงยากงั้นคุณจะลบไฟล์ออกจากทั้งหมดไดเรกทอรีที่เชื่อมโยงเหล่านั้นยาก


1 !! สิ่งนี้ช่วยฉัน ฉันไม่ได้ลองคนอื่นเพราะดูเหมือนว่า "วิธีที่ถูกต้อง" และแน่นอนมันทำให้ฉันสามารถแก้ไขปัญหาได้โดยไม่มีคำถามเพิ่มเติม ขอบคุณ!
tripleee

ฉันสร้างบัญชีเพียงเพื่อ +1 คุณ ฉันกำลังมองหาทางออกที่ดีกว่านี้และนี่คือมัน มันทำให้ฉันเป็นบ้า ขอขอบคุณ.
CWSpear

3
น่ากลัว วิธีนี้ใช้ได้ผล (แม้ว่าฉันจะออกจากตัวเลือก 'v' เพื่อหลีกเลี่ยงการดูรายการสำหรับแต่ละไฟล์สองสามแสนไฟล์) เช่น:sudo ...bypass rm -rf /Volumes/...
Brent Faust

6
นี่เป็นวิธีที่อันตรายอย่างยิ่งสำหรับการจัดการไฟล์ Time Machine Time Machine ใช้ไดเรกทอรีที่มีการเชื่อมโยงอย่างหนักเพื่ออ้างอิงโฟลเดอร์ที่ไม่ได้เปลี่ยนแปลงตั้งแต่การสำรองข้อมูลครั้งก่อน แต่rmกระบวนการไม่เข้าใจสิ่งเหล่านี้และจะติดตามลิงก์เหล่านี้และลบไฟล์ออกจากพวกเขา ซึ่งหมายความว่าคุณสามารถลบไฟล์ที่อยู่ในการสำรองข้อมูลที่เก่ากว่าและใหม่กว่าที่คุณเลือกซึ่งอาจทำให้เกิดความเสียหายที่ไม่สามารถแก้ไขได้สำหรับการสำรองข้อมูล คำแนะนำการใช้งานของ Arne Stenström tmutilนั้นนับเป็นโซลูชั่นที่เหนือกว่า
Haravikk

1
หากต้องการขยายความคิดเห็นของ Haravikk อีกเล็กน้อย: การใช้ไฟล์ที่rmเชื่อมโยงนั้นไม่เป็นไร แต่สำหรับโฟลเดอร์ที่เชื่อมโยงอย่างหนักนั้นไม่ใช่ คำตอบของเคนต์พูดถึงปัญหาเดียวกัน และในคำสั่ง Unix คืออะไรในการสร้างฮาร์ดลิงก์ไปยังไดเรกทอรีใน OS X มีคนเขียนถึง 10.5 ในปี 2010: "การลบเป็นเรื่องที่แตกต่าง: ถ้าคุณดำเนินการตามปกติในการลบไดเรกทอรีคุณจะต้องลบเนื้อหาดังนั้นคุณต้อง" ยกเลิกการเชื่อมโยง "ไดเรกทอรี: " ดังนั้นให้ใช้สิ่งนี้เพื่อลบข้อมูลสำรองทั้งหมด (สแน็ปช็อต) สำหรับเครื่องที่กำหนด unlink new_hard_link
Arjan

26

BLUF (บรรทัดล่างขึ้นด้านหน้า):

sudo tmutil delete snapshot-dir


ใช้ในการลบ ACL ของทุกลำดับชั้นจากโฟลเดอร์ที่ไม่ทำงานบนไฟล์และโฟลเดอร์ใน Time Machine ของBackups.backupdbเพราะTM Safety Netกลไกและหลักเกณฑ์ที่อธิบายไว้ในนี้318 เทควารสารโพสต์ ( แต่อาจจะไม่ตรงตามที่อธิบายไว้) .     (ก่อนที่จะเรียนรู้สิ่งนี้จากการค้นหา Safety Net ที่ระบุไว้ในคำตอบของ Eric W (ซึ่งใช้ได้) ฉันได้ทดสอบเฉพาะโฟลเดอร์ที่โคลนจากโฟลเดอร์ย่อยของการสำรองข้อมูล TM และchmodทำงานได้ แต่พยายามchmodในโฟลเดอร์จริง การสำรองข้อมูล TM ให้ข้อผิดพลาด "ไม่อนุญาตการดำเนินการ")sudo chmod -R -N folder

การใช้งานที่เป็นไปได้:
    ใน Mac OS 10.7+ มีคำสั่งtmutil (ซึ่งฉันไม่ได้ลองเพราะยังอยู่ใน Snow Leopard) มันมีกริยาลบซึ่งตามคำอธิบาย"สามารถลบสแน็ปช็อตจากข้อมูลสำรองที่ไม่ได้ทำหรือไม่ได้อ้างสิทธิ์โดยเครื่องปัจจุบัน" (โดยที่"สแน็ปช็อต"เป็นโฟลเดอร์เก่าที่แสดงถึงการสำรองข้อมูลแบบเพิ่มหน่วยเดียว) มันไม่ได้เป็นที่ชัดเจนกับผมว่านี้หมายความว่ามันไม่สามารถลบภาพรวมซึ่งจะทำโดยหรือโดยอ้างว่าเครื่องปัจจุบัน. (?)


2
อันที่จริง tmutil มีประโยชน์และจะช่วยให้คุณสามารถลบข้อมูลสำรอง ( tmutil delete /Volumes/DISK/Backups.backupdb/HOST/DATE_FOLDER) อย่างไรก็ตามคุณยังคงต้องใช้เคล็ดลับบายพาสของ Eric เพื่อลบโฟลเดอร์ "Backups.backupdb"
mivk

OSX 10.8.3 ของฉัน (Mountain Lion) ไม่ต้องการบายพาส sudo tmutil delete <snapshot-dir>เพียงแค่ bypass rmคำตอบยอดนิยมล้าสมัยแล้ว
John Mee

เป็นไปได้หรือไม่ที่จะใช้tmutilเพื่อลบไฟล์บางไฟล์ออกจากสแน็ปช็อต มันไม่ได้ผลสำหรับฉัน ( Invalid deletion target (error 22)) ดังนั้นฉันจึงไปด้วยbypassแทน
Robert Tupelo-Schneck

+1 สำหรับ BLUF คุณได้รับจากเครื่องมือจัดการที่ยอดเยี่ยมใช่ไหม :)
Olie

นอกจากนี้: ฉันค้นหาการอ้างอิงไปยังBackups.backupdbไดเรกทอรีที่ฉันไม่เห็นในไดรฟ์สำรองข้อมูลของฉัน (แคปซูลเวลา) MachineName.sparsebundleฉันเพียงแค่มีสิ่งที่อยู่ในรูปแบบ รูปแบบมีการเปลี่ยนแปลงหรือไม่? ฉันพยายามใช้คำสั่งลบการสำรองข้อมูลของ TM แต่ติดอยู่ที่แถบความคืบหน้า 99.99% เป็นเวลาหลายชั่วโมง
Olie

12

คำเตือนเกี่ยวกับการใช้bypassคำสั่งเพื่อลบการสำรองข้อมูลเก่า: หากการสำรองข้อมูลที่ถูกลบมีโฟลเดอร์ที่เหมือนกันในการสำรองข้อมูลก่อนหน้านี้หรือหลังจากนั้นไฟล์อาจถูกลบออกจากการสำรองข้อมูลก่อนหน้าหรือภายหลัง !

Time Machine ไม่เพียง แต่ใช้ฮาร์ดลิงก์สำหรับไฟล์ที่ไม่เปลี่ยนแปลง แต่ยังใช้ฮาร์ดลิงก์สำหรับโฟลเดอร์ที่ไม่มีไฟล์ถูกเพิ่มเปลี่ยนแปลงหรือลบเลย ผลลัพธ์เป็นดังนี้:

/2014-11-06/folder/file1
                  /file2
                  /file3
/2014-11-13/folder/file1 = hard link to file /2014-11-06/folder/file1
                  /file2 (changed; new inode)
                  /file3 = hard link to file /2014-11-06/folder/file3
/2014-11-20/folder/ = hard link to folder /2014-11-13/folder/
/2014-11-27/folder/ = hard link to folder /2014-11-20/folder/

ด้วยการข้างต้นการลบไฟล์ใด ๆ จาก/2014-11-06/folder/เป็นเรื่องปกติและมีผลกับการสำรองข้อมูลสำหรับวันที่เท่านั้น จำนวนการอ้างอิงฮาร์ดลิงก์จะลดลงดังนั้น " inode " สำหรับfile2จะถูกลบ แต่ inodes สำหรับfile1และfile3จะยังคงมีจำนวนการอ้างอิง 1 เนื่องจากการสำรองข้อมูลในภายหลัง ดังนั้น rm -R /2014-11-06ก็ดีเหมือนกัน

อย่างไรก็ตามการลบไฟล์ใด ๆ จากทั้ง/2014-11-13/folder/, /2014-11-20/folder/หรือ/2014-11-27/folder/มีประสิทธิภาพจะลบออกจากทุกคนที่ 3 โฟลเดอร์

ปัญหาคือrm -Rไม่สนใจโฟลเดอร์ที่เชื่อมโยงอย่างหนัก มันจะเรียกใช้ซ้ำลงในโฟลเดอร์ที่มีการเชื่อมโยงอย่างหนักที่พบลบไฟล์ทั้งหมดอย่างกล้าหาญแล้วลบโฟลเดอร์ว่างออก

ดังนั้น: เมื่อลบสำเนาสำรองอันเก่าแล้วไม่ควรนำไปคืนในโฟลเดอร์ฮาร์ดลิงก์และลบเนื้อหา แต่เพียงคนเดียวที่ควรเอาลิงค์ยากสำหรับโฟลเดอร์ของตัวเอง ดังนั้นแทนที่จะrm -Rใช้tmutil deleteตามที่อธิบายไว้ในคำตอบของอาร์เน่

เช่นกันดูเหมือนว่า OS X unlinkคำสั่งไม่สามารถใช้ในโฟลเดอร์ : "เพียงหนึ่งอาร์กิวเมนต์ซึ่งจะต้องไม่ไดเรกทอรีอาจจะจัด" ระบบปฏิบัติการ X API สามารถลบโฟลเดอร์ที่ยากต่อการเชื่อมโยงและเพื่อให้สามารถGNU coreutilsเช่นติดตั้งโดยใช้Homebrew

ในที่สุดเพื่อพิสูจน์ทั้งหมดข้างต้นกรณีทดสอบ (OSX 10.6.8):

sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
-rw-r--r--@ 2 USERNAME  staff  1551 10 30  2014 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME  staff  1551 10 30  2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME  staff  1551 10 30  2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 2 USERNAME  staff  1551 10 30  2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist

โปรดทราบว่าจำนวนลิงก์สำหรับการเกิดแต่ละครั้งคือ 2 (คอลัมน์ที่สอง) ลองลบการเกิดขึ้นครั้งแรก:

sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist 
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
-rw-r--r--@ 1 USERNAME  staff  1551 10 30  2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 1 USERNAME  staff  1551 10 30  2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
-rw-r--r--@ 1 USERNAME  staff  1551 10 30  2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist

ดังนั้นหลังจากยกเลิกการลิงก์ไฟล์หนึ่งไฟล์จำนวนลิงก์ที่ลดลงไปที่ 1 สำหรับการเกิดแต่ละครั้งแม้ว่าไฟล์จะยังคงแสดงอยู่ 3 ครั้ง ยังไม่มีปัญหา ลบเหตุการณ์แรกอีกครั้ง:

sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist 
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
ls: 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist: No such file or directory

ตอนนี้ทุกอย่างหายไป เห็นได้ชัดว่าไฟล์TopSites.plistนั้นมีการเปลี่ยนแปลงครั้งล่าสุด 2014-11-06 และฮาร์ดลิงก์ใน 2014-11-13 จากนั้นไฟล์อื่น ๆ บางส่วนถูกเพิ่มเปลี่ยนแปลงหรือลบออกในSafariโฟลเดอร์ ถัดไปเนื้อหาของSafariโฟลเดอร์ไม่ได้เปลี่ยนแปลงในการสำรองข้อมูลสองรายการถัดไปดังนั้นในวันที่ 2014-11-20 และ 2014-11-27 Safariโฟลเดอร์นั้นเชื่อมโยงกับการสำรองข้อมูลก่อนหน้าอย่างหนัก

อันที่จริง 4 โฟลเดอร์ใช้ 2 ไอโหนดเท่านั้น (คอลัมน์แรก):

sh-3.2# ls -lFaid 2014-11*/Users/USERNAME/Library/Safari/
648651968 drwxr-xr-x@ 86 USERNAME  staff  2924  9 10 16:06 2014-11-06-012454/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME  staff  2924  9 10 16:07 2014-11-13-024438/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME  staff  2924  9 10 16:07 2014-11-20-014044/Users/USERNAME/Library/Safari//
650804457 drwxr-xr-x@ 86 USERNAME  staff  2924  9 10 16:07 2014-11-27-025033/Users/USERNAME/Library/Safari//

1
พื้นหลังบางส่วน: สำหรับไฟล์ฮาร์ดลิงก์ทำงานได้ตามที่คาดไว้ เฉพาะฮาร์ดลิงก์ที่คุณต้องการลบเท่านั้นที่จะถูกลบ touch file1; ln file1 file2; ln file2 file3; ls -li; rm file2; ls -liไลค์: จะลบฮาร์ดลิงก์เดียวออกเท่านั้น แต่สำหรับโฟลเดอร์ในคำสั่ง Unix คืออะไรในการสร้างฮาร์ดลิงก์ไปยังไดเรกทอรีใน OS X บางคนเขียนถึง 10.5 ในปี 2010: "การลบเป็นเรื่องที่แตกต่าง: ถ้าคุณดำเนินการตามปกติในการลบไดเรกทอรีคุณจะต้องลบเนื้อหาดังนั้นคุณต้อง " ยกเลิกการเชื่อมโยง "ไดเรกทอรี: unlink new_hard_link" นี่อาจจะยังคงใช้ได้
Arjan

หน้าคนสำหรับunlinkการ (10.6.8) When the utility is called as unlink, only one argument, which must not be a directory, may be suppliedบอกว่ามันไม่สามารถนำมาใช้ในไดเรกทอรี:
Kent

อืมลึกลับ ยิ่งกว่านั้นคำตอบของคุณเป็นสิ่งสำคัญ: อย่าใช้[bypass] rm -rกับไดเรกทอรีที่มีลิงก์ (แต่ฉันไม่ต้องอธิบายให้คุณฟัง)
Arjan

ฉันเพิ่งทดลองอีกหน่อย การวิ่งbypass unlink FILEมีเหมือนกัน (ไม่ได้ตั้งใจ?) ผลที่ตามมาbypass rm FILEคือ ไฟล์ที่เหมือนกันจะถูกลบออกจากการสำรองข้อมูลทั้งหมดไม่ใช่เพียงแค่ตำแหน่งเดียวที่ระบุไว้ และunlinkจะไม่ใช้ไดเรกทอรีหรือมากกว่าหนึ่งไฟล์เป็นอาร์กิวเมนต์ (เซิร์ฟเวอร์ 10.6.8 แต่ฉันไม่คิดว่าจะมีการเปลี่ยนแปลงผ่านระบบปฏิบัติการเวอร์ชั่นใหม่กว่านี้)
Kent

ว้าวฉันค่อนข้างประหลาดใจที่คุณbypass rm FILEและbypass unlink FILEลบไฟล์ที่เหมือนกันทั้งหมดซึ่งไม่ตรงกับที่เห็นtouch file1; ln file1 file2; ln file2 file3; ls -li; unlink file2; ls -liหรือtouch file1; ln file1 file2; ln file2 file3; ls -li; /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass unlink file2; ls -liไม่ ฉันไม่เคยไปเอาบางสิ่งบางอย่างจากการสำรองข้อมูล ...
Arjan

3

หมายเหตุ: เนื่องจาก "TM Safety Net" ที่กล่าวถึงโดย Eric W คำตอบนี้ใช้ไม่ได้กับกรณีของการสำรองข้อมูล Time Machine ซึ่งเป็นคำถามที่เกี่ยวข้องโดยเฉพาะ แต่สำหรับกรณีอื่น ๆ ส่วนใหญ่ข้อมูลเกี่ยวกับวิธีกำจัด ACLs นั้นเกี่ยวข้องกัน


ไม่จำเป็นต้องใช้เครื่องมือ ACL ที่คัดลอกมาจากระบบปฏิบัติการรุ่นเก่า

ใช้ls -leเพื่อดู ACL และchmodเพื่อเปลี่ยน

สำหรับข้อมูลเพิ่มเติมพิมพ์man chmodและดูภายใต้” ตัวเลือกการจัดการ ACL”

คำสั่งเพื่อลบ ACL ทั้งหมดออกจากลำดับชั้นโฟลเดอร์คือ:

chmod -R -N foldername

2

เครื่องเวลาทำงานเหมือน rshapshot มันสร้างแผนผังของฮาร์ดลิงก์สำหรับการสำรองข้อมูลใหม่แต่ละครั้ง ฮาร์ดลิงก์ไปยังไฟล์ที่มีอยู่แล้วในการสำรองข้อมูลก่อนหน้านี้ใช้พื้นที่เพิ่มเติมน้อยมาก เมื่อลบฮาร์ดลิงก์ครั้งล่าสุดไปยังไฟล์เท่านั้นไฟล์นั้นจะถูกลบออกจากระบบไฟล์

การลบการสำรองข้อมูลส่วนบุคคลทั้งหมดจะไม่ทำให้เจ็บปวด คุณเพิ่งลบฮาร์ดลิงก์ จะไม่มีการสำรองข้อมูลอื่น ๆ แต่นั่นสามารถทำได้ผ่าน tmutil

สถานการณ์หนึ่งที่จำเป็นต้องหลีกเลี่ยงการป้องกันคือการลบไฟล์เฉพาะออกจากการสำรองข้อมูลทั้งหมด (และเหตุผลที่ฉันลงเอยที่โพสต์นี้)

ดิสก์สำรองของฉันเต็ม ฉันมีไฟล์ที่มีขนาดใหญ่มาก (หลายกิกะไบต์) ที่สำรองไว้เป็นเวลาหลายเดือน มีสำเนาจริงหนึ่งชุด แต่มีหลายสำเนาที่มีฮาร์ดลิงก์ไปยังสำเนานั้น ในการกำจัดไฟล์นั้นฉันต้องลบฮาร์ดลิงก์ออกจากการสำรองข้อมูลทุกครั้ง

โปรดทราบว่าหมายเลขไอโหนดเหมือนกันสำหรับฮาร์ดลิงก์ทั้งหมดไปยังไฟล์เดียวกัน

% cd /Volumes/WD\ 500G\ USB/Backups.backupdb/csm-laptop
% ls -li */Macintosh\ HD/Users/csm/vm.img
...
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-005636/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-015812/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-030036/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-041307/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 Latest/Macintosh HD/Users/csm/vm.img

(ล่าสุดเป็นเพียงลิงค์ไปยังไดเรกทอรีล่าสุด)

% sudo bypass rm -f */Macintosh\ HD\Users\csm\vm.img

ไฟล์จะถูกลบออกจากการสำรองข้อมูลทั้งหมดและพื้นที่จะถูกส่งคืน หากไฟล์มีการเปลี่ยนแปลงตลอดเวลาการสำรองข้อมูลแต่ละครั้งจะมีการคัดลอกเต็มรูปแบบและพื้นที่ที่ส่งคืนจะมีขนาดใหญ่มาก


สำหรับ"การลบการสำรองข้อมูลทั้งหมดจะไม่ทำให้เกิดความเสียหายคุณเพียงแค่ลบฮาร์ดลิงก์ออกไป : หากนี่หมายถึงสแน็ปช็อตภายในการสำรองข้อมูลสำหรับเครื่องเดียวจากนั้นคำตอบของเคน (เก่า) ที่ใช้rm -rอาจเป็นอันตราย (หรือ: เคย) ปลอดภัยกว่าดีกว่าขออภัยและใช้tmutilเพื่อสิ่งนั้น
Arjan

0

หากคุณไม่ได้ดำเนินการคำสั่งในฐานะผู้ใช้ที่ "เป็นเจ้าของ" การสำรองข้อมูลคุณจะต้องลบเวลาออกจากบรรทัดคำสั่งอย่างหนัก ฉันเพิ่งพบปัญหานี้กับการย้ายข้อมูลและเราต้องทำการสำรองข้อมูล Time Machine ทั้งหมด (1tb +) และฟอร์แมตไดรฟ์ก่อนที่เราจะสามารถเข้าถึงได้ทุกประเภท - และเชื่อใจฉันฉันพยายามทุกอย่างเพื่อแทนที่สิทธิ์


2
sudo ควรให้สิทธิ์ฉันในการเข้าถึงไฟล์ทั้งหมดในขณะที่ฉันกำลังทำงานเป็นผู้ดูแลระบบ ฉันค่อนข้างแน่ใจว่านี่เป็นปัญหา ACL และฉันกำลังดำเนินการอยู่
ทิม

1
Nic ไม่กี่ปีที่ปลาย แต่ในกรณีที่คุณพลาดมันดูคำตอบของเอริค
Arjan

@Tim: การยืนยันนี้จะไม่เป็นจริงในระบบ unixoid อื่น ๆ เนื่องจากมีแอตทริบิวต์ที่ไม่เปลี่ยนรูปแบบ ( chattr) สิ่งที่จะทำให้คุณมีเหตุผลในทางทฤษฎีคือการหลีกเลี่ยงเครือข่ายความปลอดภัยใด ๆ
0xC0000022L

0

หากคุณต้องการลบไฟล์ทั้งหมดในโฟลเดอร์และไม่เพียง แต่ไฟล์เฉพาะคุณสามารถทำได้โดยเพิ่มโฟลเดอร์ในรายการยกเว้นของ Time Machine (การตั้งค่าระบบ -> Time Machine -> ตัวเลือกลากโฟลเดอร์ที่นี่)

ครั้งต่อไปที่คุณทำการสำรองข้อมูลสำเนาของโฟลเดอร์นั้นจะถูกลบออกจากการสำรองข้อมูลก่อนหน้า

ทีนี้ถ้าคุณต้องการทำสิ่งนี้จาก CLI จริงๆมีวิธีหนึ่งแม้ว่าจะเป็นเรื่องยุ่งยากเล็กน้อย

  1. ทำสำเนาสำรองของ /Library/Preferences/com.apple.TimeMachine.plist
  2. คัดลอก /Library/Preferences/com.apple.TimeMachine.plist ที่ไหนสักแห่งที่คุณสามารถเล่นกับมัน
  3. Cd เข้าไปที่ใดก็ตามที่คุณใส่มัน
  4. ดำเนิน
    plutil -convert xml1 com.apple.TimeMachine.plist
    การแปลงจากรูปแบบไบนารี
  5. เปิด Plist ที่แปลงแล้วในโปรแกรมแก้ไขข้อความที่ต้องการค้นหา "skippaths"
  6. แทรกบรรทัดใหม่ในส่วนนั้นจัดรูปแบบเป็น <string>/Path/To/Exclude</string>
  7. บันทึกและออกแปลงกลับโดยดำเนินการ
    plutil -convert binary1 com.apple.TimeMachine.plist
  8. คัดลอก Plist ที่แก้ไขแล้วของคุณกลับไปที่ / Library / Preferences /
  9. เริ่มการสำรองข้อมูลโดยดำเนินการ
    /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper -auto

แก้ไข:เมื่อคุณทำตามขั้นตอนที่ 9 สำเนาทั้งหมดของโฟลเดอร์ที่แยกใหม่จะถูกลบออกจากการสำรองข้อมูลก่อนหน้า

หากต้องการลบข้อยกเว้นให้คัดลอกข้อมูลสำรองของคุณกลับไปที่ / Library / Preferences


ฉันไม่ได้พยายามแยกไดเรกทอรี ฉันกำลังพยายามลบไดเรกทอรีจากข้อมูลสำรองที่มีอยู่และทำบางอย่างจาก commandline จริง ๆ แล้วฉันต้องการทราบวิธีการอนุญาตให้ rm ทำงานภายในไดเรกทอรี Backups.backupdb
ทิม

ตกลงบางทีมันอาจจะไม่ชัดเจนจากคำแนะนำของฉันว่าโฟลเดอร์ถูกลบจากการสำรองข้อมูลจริงเมื่อทำตามขั้นตอนข้างต้น ดูการแก้ไขของฉัน แต่ถ้าไม่ใช่ทางออกที่คุณต้องการฉันคิดว่าคุณสามารถทำได้ตลอดเวลาsu - rootและrm -rfในโฟลเดอร์ แต่ฉันคิดว่าการเล่นซอกับสิ่งที่มีค่าเท่ากับการสำรองข้อมูลในแบบนั้นเป็นสิ่งที่เราควรพยายามหลีกเลี่ยง
Frost

แต่การเพิ่มเป็นการยกเว้นจะลบสำเนาทั้งหมดออกจากข้อมูลสำรองทั้งหมด นอกจากนี้แม้ว่านี่จะเป็นการสำรองข้อมูล TimeMachine แต่ก็ไม่ได้มาจากเครื่องที่ฉันกำลังทำอยู่ดังนั้นจึงไม่ได้ใช้ TimeMachine อีกต่อไป sudo มีผลเหมือนกับ "su - root" และ "rm -rf" ฉันค่อนข้างมั่นใจว่านี่เป็นความล้มเหลวเพราะ Apple ได้เพิ่มระดับความปลอดภัยให้กับระบบไฟล์มากกว่าการให้สิทธิ์ * อย่างง่าย
ทิม

นี่อาจฟังดูงี่เง่า แต่ฉันไม่แน่ใจว่าsudoมีผลเช่นเดียวsu - rootกับบน mac ฉันดูเหมือนจะจำเหตุการณ์ที่เกิดขึ้นเมื่อฉันพยายามที่จะลบสิ่งที่sudoไม่พอเพียง แต่sudo - rootทำเคล็ดลับ
ฟรอสต์

3
@ Frost- ฉันไม่คิดว่า Time Machine จะทำงานตามที่คุณแนะนำ ฉันเพิ่งลองแยกโฟลเดอร์จากนั้นเรียกใช้ TM และการสำรองข้อมูลเก่าของโฟลเดอร์นั้นยังคงปรากฏใน TM หรือพฤติกรรมของมันเปลี่ยนไปตั้งแต่คุณโพสต์ข้อความนี้เมื่อเกือบหนึ่งปีที่แล้ว
คาเฟอีน Coma

0

คุณสามารถสร้างlsรายการคุณลักษณะเพิ่มเติมในมุมมองยาวโดยใช้-@แฟล็ก มันจะแสดงรายการ ACL เมื่อคุณจัดหา-eแฟล็ก ls -lea@ DIRดังนั้นคุณสามารถค้นหาสิ่งที่คุณกำลังติดต่อกับโดยใช้

ตัดสินจากการสำรองข้อมูล Time Machine ในพื้นที่ของฉันดูเหมือนว่า Time Machine จะใช้แอททริบิวต์เพิ่มเติมพร้อมข้อมูลเมตาเกี่ยวกับสแน็ปช็อตใหม่และเก่าที่สุด ข้อมูลที่เก็บโดย xattrs นั้นดูเหมือนจะเป็นเพลทแบบไบนารี สิ่งเหล่านี้ดูไม่น่ากลัว

Time Machine ยังมีลักษณะที่จะใช้ ACLs กับบางไดเรกทอรีที่รู้จักเช่นในไดเรกทอรีผู้ใช้มาตรฐาน ACLs มีอยู่สองชนิดที่อาจเกิดขึ้นในแบบของคุณ: ชนิดที่นำไปใช้โดยตรงกับไฟล์หรือไดเรกทอรีที่ปฏิเสธการลบและชนิดที่นำไปใช้กับพาเรนต์ของไฟล์ที่ปฏิเสธ delete_child

น่าเสียดายที่ Mac OS X ไม่ได้จัดหายูทิลิตี้ผู้ใช้getfaclและsetfaclระบุโดย POSIX.2c เพื่อดูและจัดการ ACL หากต้องการยุ่งกับ ACL คุณจะต้องทำโปรแกรมบางอย่าง ดูacl(3)manpage

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