rdiff-backup - เครื่องมือสำรองข้อมูลส่วนเพิ่มระยะไกลสำหรับ Linux
rdiff-backup เป็นสคริปต์ Python ที่มีประสิทธิภาพและใช้งานง่ายสำหรับการสำรองข้อมูลส่วนเพิ่มในเครื่อง/ระยะไกล ซึ่งทำงานบนระบบปฏิบัติการ POSIX เช่น Linux, Mac OS X หรือ Cygwin เป็นการนำเอาคุณสมบัติอันน่าทึ่งของกระจกเงาและการสำรองส่วนเพิ่มมารวมกัน
สิ่งสำคัญคือจะรักษาไดเร็กทอรีย่อย ไฟล์ dev ฮาร์ดลิงก์ และคุณลักษณะของไฟล์ที่สำคัญ เช่น สิทธิ์ การเป็นเจ้าของ uid/gid เวลาในการแก้ไข คุณลักษณะเพิ่มเติม acls และทางแยกทรัพยากร สามารถทำงานในโหมดประหยัดแบนด์วิธบนไปป์ได้ เช่นเดียวกับเครื่องมือสำรองข้อมูล rsync ยอดนิยม
rdiff-backup สำรองข้อมูลไดเรกทอรีเดียวไปยังอีกไดเรกทอรีหนึ่งผ่านเครือข่ายโดยใช้ SSH ซึ่งหมายความว่าการถ่ายโอนข้อมูลได้รับการเข้ารหัสอย่างปลอดภัย ไดเร็กทอรีเป้าหมาย (บนระบบรีโมต) ลงท้ายด้วยสำเนาของไดเร็กทอรีต้นทางทุกประการ อย่างไรก็ตาม ส่วนต่างการย้อนกลับเพิ่มเติมจะถูกจัดเก็บไว้ในไดเร็กทอรีย่อยพิเศษในไดเร็กทอรีเป้าหมาย ทำให้สามารถกู้คืนไฟล์ที่สูญหายไปเมื่อไม่นานมานี้ได้
การพึ่งพาอาศัยกัน
หากต้องการใช้ rdiff-backup ใน Linux คุณจะต้องติดตั้งแพ็คเกจต่อไปนี้บนระบบของคุณ:
- Python v2.2 หรือใหม่กว่า
- librsync v0.9.7 หรือใหม่กว่า
- โมดูล pylibacl และ pyxattr Python เป็นทางเลือก แต่จำเป็นสำหรับรายการควบคุมการเข้าถึง POSIX (ACL) และการสนับสนุนแอตทริบิวต์เพิ่มเติมตามลำดับ
- rdiff-backup-statistics ต้องใช้ Python v2.4 หรือใหม่กว่า
วิธีการติดตั้ง rdiff-backup ใน Linux
ข้อสำคัญ: หากคุณใช้งานผ่านเครือข่าย คุณจะต้องติดตั้ง rdiff-backup ทั้งสองระบบ โดยเฉพาะอย่างยิ่ง การติดตั้ง rdiff-backup ทั้งสองจะต้องตรงกันทุกประการ รุ่นเดียวกัน
สคริปต์มีอยู่แล้วในที่เก็บข้อมูลอย่างเป็นทางการของลีนุกซ์รุ่นหลัก เพียงรันคำสั่งด้านล่างเพื่อติดตั้ง rdiff-backup รวมถึงการขึ้นต่อกัน:
ติดตั้งการสำรองข้อมูล rdiff บน Ubuntu
หากต้องการติดตั้ง Rdiff-Backup บน Ubuntu Focal หรือ Debian Bullseye หรือใหม่กว่า (มี 2.0)
sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup
หากต้องการติดตั้ง Rdiff-Backup บน backport ของ Ubuntu สำหรับเวอร์ชันเก่า (ต้องใช้ backported 2.0)
sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu
บน CentOS/RHEL 8
ในการติดตั้ง Rdiff-Backup บน CentOS และ RHEL 8 (จาก COPR)
sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup
บน CentOS/RHEL 7
ในการติดตั้ง Rdiff-Backup บน CentOS และ RHEL 7 (จาก COPR)
sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup
บน CentOS/RHEL 6
sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup
บนเฟโดรา
วิธีติดตั้ง Rdiff-Backup บน Fedora 32+
sudo dnf install rdiff-backup
วิธีใช้ rdiff-backup ใน Linux
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ rdiff-backup ใช้ SSH เพื่อเชื่อมต่อกับเครื่องระยะไกลบนเครือข่ายของคุณ และการตรวจสอบสิทธิ์เริ่มต้นใน SSH คือวิธีชื่อผู้ใช้/รหัสผ่าน ซึ่งโดยปกติแล้วจะต้องมีการโต้ตอบของมนุษย์
อย่างไรก็ตาม เพื่อให้งานต่างๆ เป็นอัตโนมัติ เช่น การสำรองข้อมูลอัตโนมัติด้วยสคริปต์และอื่นๆ คุณจะต้องกำหนดค่าการเข้าสู่ระบบแบบไร้รหัสผ่าน SSH โดยใช้คีย์ SSH เนื่องจากคีย์ SSH จะเพิ่มความไว้วางใจระหว่างเซิร์ฟเวอร์ Linux สองเซิร์ฟเวอร์เพื่อการซิงโครไนซ์หรือถ่ายโอนไฟล์ที่ง่ายดาย
เมื่อคุณตั้งค่าการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH แล้ว คุณสามารถเริ่มใช้สคริปต์ตามตัวอย่างต่อไปนี้
สำรองไฟล์ไปยังพาร์ติชั่นอื่น
ตัวอย่างด้านล่างจะสำรองข้อมูลไดเร็กทอรี /etc
ในไดเร็กทอรี สำรองข้อมูล บนพาร์ติชันอื่น:
sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup
หากต้องการยกเว้นไดเรกทอรีเฉพาะและไดเรกทอรีย่อย คุณสามารถใช้ตัวเลือก --exclude
ได้ดังนี้:
sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup
เราสามารถรวมไฟล์อุปกรณ์ ไฟล์ fifo ไฟล์ซ็อกเก็ต และลิงก์สัญลักษณ์ทั้งหมดด้วยตัวเลือก --include-special-files
ดังต่อไปนี้:
sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
มีแฟล็กสำคัญอีกสองแฟล็กที่เราสามารถตั้งค่าสำหรับการเลือกไฟล์ได้ ขนาด --max-file-size
ซึ่งไม่รวมไฟล์ที่มีขนาดใหญ่กว่าขนาดที่กำหนดในหน่วยไบต์ และขนาด --min-file-size
ซึ่งไม่รวมไฟล์ที่มีขนาดเล็กกว่า ขนาดที่กำหนดเป็นไบต์:
sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup
สำรองไฟล์ระยะไกลบนเซิร์ฟเวอร์ Linux ภายใน
เพื่อวัตถุประสงค์ของส่วนนี้ เราจะใช้:
Remote Server (tecmint) : 192.168.56.102
Local Backup Server (backup) : 192.168.56.10
ตามที่เราระบุไว้ก่อนหน้านี้ คุณต้องติดตั้ง rdiff-backup เวอร์ชันเดียวกันบนทั้งสองเครื่อง ตอนนี้ให้ลองตรวจสอบเวอร์ชันบนทั้งสองเครื่องดังนี้:
rdiff-backup -V
บนเซิร์ฟเวอร์สำรองข้อมูล ให้สร้างไดเร็กทอรีที่จะจัดเก็บไฟล์สำรองข้อมูลดังนี้:
mkdir -p /backups
ตอนนี้จากเซิร์ฟเวอร์สำรอง ให้รันคำสั่งต่อไปนี้เพื่อสร้างการสำรองข้อมูลไดเร็กทอรี /var/log/
และ /root
จากเซิร์ฟเวอร์ Linux ระยะไกล 192.168.56.102 ใน /backups
:
rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup
ภาพหน้าจอด้านล่างแสดงไฟล์รูทบนเซิร์ฟเวอร์ระยะไกล 192.168.56.102 และไฟล์ที่สำรองไว้บนเซิร์ฟเวอร์ด้านหลัง 192.168.56.10:
จดไดเร็กทอรี rdiff-backup-data ที่สร้างขึ้นในไดเร็กทอรี backup
ดังที่เห็นในภาพหน้าจอ โดยประกอบด้วยข้อมูลสำคัญที่เกี่ยวข้องกับกระบวนการสำรองข้อมูลและไฟล์ที่เพิ่มขึ้น
ขณะนี้ บนเซิร์ฟเวอร์ 192.168.56.102 ไฟล์เพิ่มเติมได้ถูกเพิ่มลงในไดเร็กทอรีรากดังที่แสดงด้านล่าง:
มารันคำสั่ง backup อีกครั้งเพื่อรับข้อมูลที่เปลี่ยนแปลง เราสามารถใช้ตัวเลือก -v[0-9]
(โดยที่ตัวเลขระบุระดับการใช้คำฟุ่มเฟือย ค่าเริ่มต้นคือ 3 ซึ่งเงียบ) ตั้งค่าคุณสมบัติการใช้คำฟุ่มเฟือย:
rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup
และในการแสดงรายการหมายเลขและวันที่ของการสำรองข้อมูลส่วนเพิ่มบางส่วนที่มีอยู่ในไดเร็กทอรี /backups/192.168.56.102_rootfiles.backup เราสามารถเรียกใช้:
rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/
การสำรองข้อมูล rdiff-back อัตโนมัติโดยใช้ Cron
เราสามารถพิมพ์สถิติสรุปหลังจากการสำรองข้อมูลสำเร็จด้วย --print-statistics
อย่างไรก็ตาม หากเราไม่ได้ตั้งค่าตัวเลือกนี้ ข้อมูลจะยังคงอยู่ในไฟล์สถิติเซสชัน อ่านเพิ่มเติมเกี่ยวกับตัวเลือกนี้ในส่วนสถิติของหน้า man
และแฟล็ก –remote-schema ช่วยให้เราสามารถระบุวิธีอื่นในการเชื่อมต่อกับคอมพิวเตอร์ระยะไกลได้
ตอนนี้ เรามาเริ่มต้นด้วยการสร้างสคริปต์ backup.sh
บนเซิร์ฟเวอร์สำรอง 192.168.56.10 ดังนี้:
cd ~/bin
vi backup.sh
เพิ่มบรรทัดต่อไปนี้ลงในไฟล์สคริปต์
#!/bin/bash
#This is a rdiff-backup utility backup script
#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only /"' [email ::/var/logs /backups/192.168.56.102_logs.back
#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
#append error message in ~/backup.log file
echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
exit 1;
fi
#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back
บันทึกไฟล์และออก จากนั้นเรียกใช้คำสั่งต่อไปนี้เพื่อเพิ่มสคริปต์ลงใน crontab บนเซิร์ฟเวอร์สำรอง 192.168.56.10:
crontab -e
เพิ่มบรรทัดนี้เพื่อเรียกใช้สคริปต์สำรองข้อมูลของคุณทุกวันเวลาเที่ยงคืน:
0 0 * * * /root/bin/backup.sh > /dev/null 2>&1
บันทึก crontab และปิด ตอนนี้เราได้ดำเนินการสำรองข้อมูลอัตโนมัติสำเร็จแล้ว ตรวจสอบให้แน่ใจว่าทำงานได้ตามที่คาดหวัง
อ่านหน้า man page rdiff-backup เพื่อดูข้อมูลเพิ่มเติม ตัวเลือกการใช้งานโดยละเอียด และตัวอย่าง:
man rdiff-backup
โฮมเพจ rdiff-backup: http://www.nongnu.org/rdiff-backup/
แค่นั้นแหละ! ในบทช่วยสอนนี้ เราได้แสดงวิธีการติดตั้งและใช้ rdiff-backup ซึ่งเป็นสคริปต์ Python ที่ใช้งานง่ายสำหรับการสำรองข้อมูลส่วนเพิ่มในเครื่อง/ระยะไกลใน Linux แบ่งปันความคิดของคุณกับเราผ่านทางส่วนข้อเสนอแนะด้านล่าง