นี่คือคำแนะนำrsync
สำหรับการใช้สำรองข้อมูล Pi เมื่อสร้างการสำรองข้อมูลครั้งแรกทำให้เป็นปัจจุบันด้วยวิธีนี้จะเร็วกว่าการริปรูปภาพทั้งหมดอย่างต่อเนื่อง คุณสามารถทำได้กับฮาร์ดไดรฟ์ในระบบหรือผ่านเครือข่าย
จริงๆแล้วคุณไม่ต้องการสำเนาที่สมบูรณ์ของระบบที่ทำงานเป็นแบ็คอัพเนื่องจากบางสิ่งที่ชัดเจนในระบบไฟล์นั้นมีอยู่ที่รันไทม์เท่านั้น รวมถึงสิ่งที่อยู่ในการสำรองข้อมูลแล้วใช้มันเพื่อสร้างภาพในภายหลังอาจสร้างปัญหาให้คุณ
มีข้อยกเว้นอื่น ๆ ด้วย rsync
สามารถยอมรับรายการรูปแบบ( glob ) ที่จะไม่รวมและสามารถอ่านได้จากไฟล์ดังนั้นก่อนอื่นเราควรผ่านสิ่งที่ควรมีในไฟล์ โปรดทราบว่ารายการที่มีรูปแบบและไม่ได้/directory/*
/directory
นี่เป็นเพราะเราต้องการให้มีอยู่ แต่เราไม่ต้องการคัดลอกสิ่งใด ๆ ในพวกเขา
/proc/*
/sys/*
สิ่งเหล่านี้ไม่มีอยู่จริงบนดิสก์ พวกเขากำลังมีอินเตอร์เฟซเคอร์เนลซึ่งจะสร้างและรักษาพวกเขาในความทรงจำ หากคุณคัดลอกสิ่งเหล่านี้แล้วคัดลอกกลับเข้าสู่ระบบและบูตมันจะไม่มีความหมาย (ที่ดีที่สุด) เนื่องจากเคอร์เนลใช้สิ่งเหล่านั้นเป็นจุดเชื่อมต่อสำหรับอินเทอร์เฟซ [หากคุณต้องการดูว่าเกิดอะไรขึ้นเมื่อคุณติดตั้งพาร์ติชันระบบแฟ้ม ในไดเรกทอรีที่มีข้อมูลอยู่ให้ลอง มันใช้งานได้และจะไม่ทำอันตรายใด ๆ แต่สิ่งที่อยู่ในไดเรกทอรีไม่สามารถเข้าถึงได้]
โปรดทราบว่ามันเป็นสิ่งสำคัญที่/sys
และ/proc
จุดเชื่อมต่ออยู่ แต่พวกเขาไม่ควรมีอะไรเลย ต่อไป:
/dev/*
dev
ไดเรกทอรีไม่มากสิ่งเดียวproc
และsys
แต่สำหรับวัตถุประสงค์ของเรามันเป็น หากคุณเชื่อว่าคุณควรบันทึกนี้เพื่อให้คุณสามารถมีโหนดอุปกรณ์เดียวกันในการสำรองข้อมูลหรือสิ่งที่คุณคุณผิด ไม่รำคาญ dev
อย่าคัดลอก กาลครั้งหนึ่งนานมาแล้วลีนุกซ์ทำงานอย่างนั้น แต่มันก็ไม่ได้อีกต่อไปแล้ว
/boot/*
นี่เป็นกรณีพิเศษที่มี distros เฉพาะของ Pi ส่วนใหญ่ (อาจทั้งหมด) เช่น Raspbian จริงๆแล้วมันเป็นจุดเมานท์สำหรับพาร์ติชันแรก vfat พาร์ติชัน เราจะจัดการกับมันแยกกัน ไม่ว่าคุณจะทำอะไรไม่ต้องกังวลรวมถึงที่นี่เพราะอีกครั้งมันเป็นจุดเชื่อมต่อ
/tmp/*
/run/*
/run
โดยทั่วไปไม่ได้อยู่ในดิสก์ แต่อยู่ในหน่วยความจำ อาจ/tmp
เป็นได้เช่นกัน (นี่อาจเป็นการบันทึกการกระทำของการ์ด SD) แต่ในกรณีใด ๆ เนื่องจากชื่อบ่งบอกถึงสิ่งเหล่านี้ไม่ใช่สถานที่สำหรับเก็บข้อมูลถาวร แอปพลิเคชั่นที่ใช้แอพพลิเคชั่นนั้นคาดว่าอาจถูกลบในการบู๊ตแต่ละครั้ง
/mnt/*
/media/*
สิ่งเหล่านี้มีความสำคัญอย่างยิ่งหากคุณวางแผนที่จะสำรองข้อมูลไปยังฮาร์ดไดรฟ์หรืออุปกรณ์ USB และอุปกรณ์นั้นอยู่ใน/mnt
หรือ/media
(โดยอัตโนมัติมีแนวโน้มที่จะใช้งานหลัง) เพราะถ้าคุณไม่แยกตำแหน่งของอุปกรณ์เหล่านั้นในระบบไฟล์ สร้างลูปแบ็คอัพเนื้อหาของไดรฟ์ให้ตัวเองจนกว่าจะหมดพื้นที่ ฉันคิดว่าrsync
อาจฉลาดพอที่จะมองเห็นสิ่งที่เป็นใบ้ แต่พยายามหลีกเลี่ยงการทดสอบหลักฐาน
ไปยังการสำรองข้อมูลจริง: สร้างไดเรกทอรีเพื่อสำรองข้อมูลบนฮาร์ดไดรฟ์ที่ติดตั้งแบบโลคัลสิ่ง USB ฯลฯ - เช่น "pi_backup" คุณสามารถสำรองข้อมูลไปยังสถานที่ห่างไกลผ่านssh
(ดูด้านล่าง) หรือใช้ระบบไฟล์ที่ติดตั้งบนเครือข่าย แต่อาจใช้เวลาสักครู่ในครั้งแรก
หากไฟล์ที่มีรายการที่ต้องแยกคือ/rsync-exclude.txt
1และไดรฟ์ของคุณคือ/mnt/usbhd
ให้ทำการสำรองข้อมูลจริง:
rsync -aHv --delete --exclude-from=/rsync-exclude.txt / /mnt/usbhd/pi_backup/
pi_backup/
ขอให้สังเกตว่ามีการต่อท้ายเฉือนบน
ขั้นตอนนี้ใช้เวลาสักครู่และสร้างเอาต์พุตจำนวนมาก (หากคุณต้องการตรวจสอบว่าในบันทึกแทนให้ต่อท้าย> rsync.log
) --delete
ไม่มีความหมายในครั้งแรก แต่เพื่อให้การสำรองข้อมูลอัปเดตใช้งานได้ สิ่งนี้ทำให้มั่นใจได้ว่าสิ่งที่คุณลบใน Pi ภายหลังจะถูกลบออกจากการสำรองข้อมูลของคุณ a
recursion ชุดลงในไดเรกทอรีและทำให้แน่ใจว่าทุกแอตทริบิวต์ของแฟ้มแข่งขัน -H
คือการรักษาฮาร์ดลิงก์2ไว้v
สำหรับ verbose ซึ่งเป็นสาเหตุที่คุณได้รับเอาต์พุตบางส่วน (มิฉะนั้นrsync
จะเงียบ) ดูman rsync
เพิ่มเติม
มีทางลัดที่คุณสามารถข้าม--exclude-from
ไฟล์ได้ หากคุณแน่ใจว่าทุกสิ่งที่คุณไม่ต้องการคัดลอก ( /tmp
ฯลฯ ) อยู่ในระบบไฟล์แยกกันคุณสามารถใช้:
rsync -axHv --delete-during / /mnt/usbhd/pi_backup/
-x
ถูกแทรก นี่เป็นรูปแบบย่อของ--one-file-system
ซึ่งบอกว่าจะrsync
ไม่ข้ามขอบเขตของระบบไฟล์ โดยส่วนตัวแล้วฉันชอบ--exclude-from
แต่ในตัวอย่างเช่น Raspbian ที่เป็นค่าเริ่มต้น--one-file-system
จะทำงานได้ดี คุณสามารถใช้ทั้งคู่ได้หากต้องการ-x
ระวัง: D
นั่นไม่ใช่การสำรองข้อมูลที่ค่อนข้างสมบูรณ์ ก็เพียงพอแล้วหากคุณไม่ได้ใส่อะไรลงไปboot
และคุณก็สบายใจเมื่อใช้แบ็คอัพเพื่อกู้คืนระบบโดยการใส่การ์ดในคอมพิวเตอร์และทำงาน:
rsync -av --delete-during /mnt/usbhd/pi_backup/ /mnt/sdcard_partition2/
คุณสามารถทำได้ด้วยการ์ดที่มีภาพใหม่อยู่บนนั้น (สมมุติว่าเป็นภาพเดียวกับภาพฐานของคุณ) แม้ว่ามันจะไม่มีประสิทธิภาพเล็กน้อยถ้าคุณต้องสร้างภาพ (เพราะคุณจะเขียนทับมันเป็นส่วนใหญ่) คุณยังสามารถเชื่อมต่อการ์ด SD อีกการ์ดผ่านอะแดปเตอร์ USB ที่มีภาพดังกล่าวและใช้วิธีการด้านบนเพื่อรักษาการ์ดที่ซ้ำกัน
หากคุณใส่สิ่งต่าง ๆ/boot
(เช่นเคอร์เนลที่กำหนดเอง) รวมถึง/boot/config.txt
คุณจะต้องสำรองข้อมูลนั้นด้วย (ค่อนข้างง่าย - มีไม่มาก) แยกกันทำและเมื่อคุณกู้คืนสิ่งนั้นจะอยู่ในพาร์ติชันแรก
ดูที่นี่หากคุณต้องการสร้างภาพสไตล์ Raspbian เปล่าซึ่งคุณสามารถสำรองไว้ คุณสามารถใช้วิธีการที่คล้ายกันเพื่อสร้างการ์ดสไตล์ Raspbian ที่ว่างเปล่า - แทนที่จะจัดการกับ.img
ไฟล์คุณจะต้องจัดการกับอุปกรณ์จริง (เช่น/dev/sdb
) หมายถึงสิ่งที่คุณต้องทำคือสร้างตารางพาร์ติชันด้วยfdisk
แล้ว รูปแบบ/dev/sdb1
และsdb2
(หรืออะไรก็ตาม) mkfs
ด้วย
แต่การคัดลอกภาพทั้งหมดนั้นง่ายกว่า! ทำไมต้องกังวลกับเรื่องนี้?
มันไม่ยากเลย ฉันกู้คืนไปยังการ์ดเปล่า (จัดรูปแบบตามลิงค์สุดท้ายนั้น) ใน 10 นาที ใช่เพียงแค่ใช้dd
กับทุกสิ่งนั้นง่ายกว่า (หากคุณพบสิ่งต่าง ๆ เช่นคำที่ทำให้สับสน ... ) แต่ก็ใช้เวลาพอสมควรทุกครั้งที่คุณต้องการอัปเดตการสำรองข้อมูลเพราะคุณต้องทำ 100% ทุกครั้ง ใช้rsync
เมื่อมีการสำรองข้อมูลอยู่การอัปเดตจะเร็วกว่ามากดังนั้นคุณสามารถตั้งค่านี้ให้เกิดขึ้นได้ทุกวันผ่าน cron ผ่านเครือข่ายได้ ทุกหกชั่วโมง ยิ่งคุณทำบ่อยเท่าไหร่ก็จะยิ่งใช้เวลาน้อยลงเท่านั้น
rsync
ผ่านทาง ssh
นี่คือตัวอย่าง:
rsync [options] --rsh="ssh [ssh options]" root@[the pi ip]:/ /backup/rpi/
"ตัวเลือก" จะเป็นเช่น-av --delete --exclude-from=/rsync-exclude.txt
และ "ตัวเลือก ssh" เป็นสิ่งที่คุณใช้ตามปกติ (ถ้ามี) คุณต้องมีการเข้าถึงรากผ่านssh
การทำเช่นนี้เพื่อวัตถุประสงค์ในการสำรองข้อมูลระบบ (ตั้งPermitRootLogin=yes
ใน/etc/ssh/sshd_config
และรีสตาร์ทเซิร์ฟเวอร์)
1คุณควรเก็บไฟล์นี้ไว้ คุณสามารถใส่ความเห็นในนั้นบนเส้นเริ่มต้นด้วยหรือ#
;
ซึ่งอาจรวมถึงrsync
คำสั่งจริงซึ่งสามารถคัดลอกวางในภายหลังเพื่อให้คุณไม่ต้องจำมันทุกครั้ง
2ขอบคุณ Kris ที่ชี้rsync
ไม่ได้ทำสิ่งนี้โดยอัตโนมัติ
dd
rsync