ค้นหาเว็บไซต์

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 แบ่งปันความคิดของคุณกับเราผ่านทางส่วนข้อเสนอแนะด้านล่าง