Rsnapshot (ใช้ Rsync) - ยูทิลิตี้สำรองข้อมูลระบบไฟล์ในเครื่อง/ระยะไกลสำหรับ Linux
rsnapshot เป็นยูทิลิตีการสำรองข้อมูลระบบไฟล์โอเพ่นซอร์ส ท้องถิ่น/ระยะไกล เขียนด้วยภาษา Perl ซึ่งได้ประโยชน์จากพลังของ < โปรแกรมRsync และ SSH เพื่อสร้างการสำรองข้อมูลส่วนเพิ่มตามกำหนดเวลาของระบบไฟล์ Linux/Unix ในขณะที่ใช้พื้นที่เพียง การสำรองข้อมูลเต็มรูปแบบเพียงครั้งเดียว บวกกับความแตกต่าง และเก็บข้อมูลสำรองเหล่านั้นไว้ใน ในเครื่อง ไดรฟ์ ไปยัง ฮาร์ดไดรฟ์ อื่น ซึ่งเป็นแท่ง USB ภายนอก ไดรฟ์ที่ติดตั้ง NFS หรือเพียงผ่านเครือข่ายไปยังเครื่องอื่นผ่าน SSH
บทความนี้จะสาธิตวิธีการติดตั้ง ตั้งค่า และใช้ rsnapshot เพื่อสร้างส่วนเพิ่ม รายชั่วโมง, รายวัน, รายสัปดาห์ และ < การสำรองข้อมูลภายในเครื่อง>รายเดือน ที่แข็งแกร่ง รวมถึงการสำรองข้อมูลระยะไกล หากต้องการดำเนินการขั้นตอนทั้งหมดในบทความนี้ คุณจะต้องเป็นผู้ใช้ รูท
ขั้นตอนที่ 1: การติดตั้ง Rsnapshot Backup ใน Linux
การติดตั้ง rsnapshot โดยใช้ Yum และ APT อาจแตกต่างกันเล็กน้อย หากคุณใช้ Red Hat และ การแจกแจงตามเดเบียน
บน RHEL/CentOS
ขั้นแรก คุณจะต้องติดตั้งและเปิดใช้งานพื้นที่เก็บข้อมูลบุคคลที่สามชื่อ EPEL โปรดไปที่ลิงก์ด้านล่างเพื่อติดตั้งและเปิดใช้งานภายใต้ระบบ RHEL/CentOS ของคุณ ผู้ใช้ Fedora ไม่ต้องการการกำหนดค่าพื้นที่เก็บข้อมูลพิเศษใดๆ
- ติดตั้งและเปิดใช้งานพื้นที่เก็บข้อมูล EPEL ใน RHEL/CentOS 6/5/4
เมื่อคุณตั้งค่าสิ่งต่าง ๆ แล้ว ให้ติดตั้ง rsnapshot จากบรรทัดคำสั่งดังที่แสดง
yum install rsnapshot
บน Debian/Ubuntu/Linux Mint
ตามค่าเริ่มต้น rsnapshot จะรวมอยู่ในที่เก็บของ Ubuntu ดังนั้นคุณจึงสามารถติดตั้งได้โดยใช้คำสั่ง apt-get ดังที่แสดง
apt-get install rsnapshot
ขั้นตอนที่ 2: การตั้งค่าการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH
หากต้องการสำรองข้อมูลเซิร์ฟเวอร์ Linux ระยะไกล เซิร์ฟเวอร์สำรอง rsnapshot ของคุณจะสามารถเชื่อมต่อผ่าน SSH โดยไม่ต้องใช้รหัสผ่าน เพื่อให้บรรลุเป้าหมายนี้ คุณจะต้องสร้างคีย์สาธารณะและคีย์ส่วนตัว SSH เพื่อตรวจสอบสิทธิ์บนเซิร์ฟเวอร์ rsnapshot โปรดไปที่ลิงก์ด้านล่างเพื่อสร้างคีย์สาธารณะและคีย์ส่วนตัวบนเซิร์ฟเวอร์สำรอง rsnapshot ของคุณ
- สร้างการเข้าสู่ระบบแบบไม่ใช้รหัสผ่าน SSH โดยใช้ SSH Keygen
ขั้นตอนที่ 3: การกำหนดค่า Rsnapshot
ตอนนี้ คุณจะต้องแก้ไขและเพิ่มพารามิเตอร์บางตัวลงในไฟล์การกำหนดค่า rsnapshot เปิดไฟล์ rsnapshot.conf ด้วยโปรแกรมแก้ไข vi หรือ nano
vi /etc/rsnapshot.conf
จากนั้นสร้างไดเร็กทอรีสำรองที่คุณต้องการจัดเก็บข้อมูลสำรองทั้งหมด ในกรณีของฉัน ตำแหน่งไดเร็กทอรีสำรองของฉันคือ “/data/backup/ ” ค้นหาและแก้ไขพารามิเตอร์ต่อไปนี้เพื่อตั้งค่าตำแหน่งสำรองข้อมูล
snapshot_root /data/backup/
นอกจากนี้ ให้ยกเลิกหมายเหตุบรรทัด “cmd_ssh” เพื่ออนุญาตให้ทำการสำรองข้อมูลระยะไกลผ่าน SSH หากต้องการยกเลิกการใส่เครื่องหมายบรรทัด ให้ลบ “#” ที่อยู่หน้าบรรทัดต่อไปนี้ เพื่อให้ rsnapshot สามารถถ่ายโอนข้อมูลของคุณไปยังเซิร์ฟเวอร์สำรองได้อย่างปลอดภัย
cmd_ssh /usr/bin/ssh
ถัดไป คุณต้องตัดสินใจว่าคุณต้องการเก็บข้อมูลสำรองเก่าไว้จำนวนเท่าใด เนื่องจาก rsnapshot ไม่ทราบว่าคุณต้องการถ่ายภาพสแนปช็อตบ่อยเพียงใด คุณต้องระบุจำนวนข้อมูลที่จะบันทึก เพิ่มช่วงเวลาที่จะเก็บ และจำนวนข้อมูลแต่ละรายการ
การตั้งค่าเริ่มต้นนั้นดีพอแล้ว แต่ฉันยังต้องการให้คุณเปิดใช้งานช่วงเวลา “รายเดือน ” เพื่อที่คุณจะได้มีการสำรองข้อมูลระยะยาวไว้ด้วย โปรดแก้ไขส่วนนี้ให้มีลักษณะคล้ายกับการตั้งค่าด้านล่าง
#########################################
BACKUP INTERVALS #
Must be unique and in ascending order #
i.e. hourly, daily, weekly, etc. #
#########################################
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
อีกสิ่งหนึ่งที่คุณต้องแก้ไขคือตัวแปร “ssh_args” หากคุณได้เปลี่ยน พอร์ต SSH เริ่มต้น (22) เป็นค่าอื่น คุณจะต้องระบุหมายเลขพอร์ตของเซิร์ฟเวอร์สำรองข้อมูลระยะไกลของคุณ
ssh_args -p 7851
สุดท้าย เพิ่มไดเร็กทอรีสำรองข้อมูลในเครื่องและระยะไกลที่คุณต้องการสำรองข้อมูล
สำรองไดเรกทอรีท้องถิ่น
หากคุณได้ตัดสินใจสำรองข้อมูลไดเร็กทอรีของคุณภายในเครื่องไปยังเครื่องเดียวกัน รายการสำรองจะมีลักษณะเช่นนี้ ตัวอย่างเช่น ฉันกำลังสำรองข้อมูลไดเรกทอรี /tecmint และ /etc ของฉัน
backup /tecmint/ localhost/
backup /etc/ localhost/
สำรองไดเรกทอรีระยะไกล
หากคุณต้องการสำรองข้อมูลไดเร็กทอรีเซิร์ฟเวอร์ระยะไกล คุณต้องบอก rsnapshot ว่าเซิร์ฟเวอร์อยู่ที่ไหนและไดเร็กทอรีใดที่คุณต้องการสำรองข้อมูล ที่นี่ ฉันกำลังสำรองข้อมูลไดเรกทอรีเซิร์ฟเวอร์ระยะไกล “/home” ของฉันภายใต้ไดเรกทอรี “/data/backup” บนเซิร์ฟเวอร์ rsnapshot
backup [email :/home/ /data/backup/
อ่านเพิ่มเติม:
- วิธีสำรอง/ซิงค์ไดเรกทอรีโดยใช้เครื่องมือ Rsync (Remote Sync)
- วิธีการถ่ายโอนไฟล์/โฟลเดอร์โดยใช้คำสั่ง SCP
ไม่รวมไฟล์และไดเร็กทอรี
ที่นี่ ฉันจะยกเว้นทุกอย่าง จากนั้นกำหนดเฉพาะสิ่งที่ฉันต้องการสำรองข้อมูลโดยเฉพาะ ในการดำเนินการนี้ คุณจะต้องสร้างไฟล์แยกออก
vi /data/backup/tecmint.exclude
ขั้นแรกให้รับรายการไดเรกทอรีที่คุณต้องการสำรองข้อมูลและเพิ่ม ( – * ) เพื่อยกเว้นทุกอย่างอื่น นี่จะสำรองข้อมูลเฉพาะสิ่งที่คุณระบุไว้ในไฟล์เท่านั้น ไฟล์แยกของฉันมีลักษณะคล้ายกับด้านล่าง
+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*
การใช้ตัวเลือกแยกไฟล์อาจเป็นเรื่องยุ่งยากมากเนื่องจากการใช้การเรียกซ้ำ rsync ดังนั้นตัวอย่างข้างต้นของฉันอาจไม่ใช่สิ่งที่คุณกำลังมองหา จากนั้นเพิ่มไฟล์ที่ยกเว้นลงในไฟล์ rsnapshot.conf
exclude_file /data/backup/tecmint.exclude
ในที่สุด คุณเกือบจะเสร็จสิ้นการกำหนดค่าเริ่มต้นแล้ว บันทึกไฟล์การกำหนดค่า “/etc/rsnapshot.conf” ก่อนที่จะดำเนินการต่อไป มีตัวเลือกมากมายที่จะอธิบาย แต่นี่คือไฟล์การกำหนดค่าตัวอย่างของฉัน
config_version 1.2
snapshot_root /data/backup/
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
interval hourly 6
interval daily 7
interval weekly 4
interval monthly 3
ssh_args -p 25000
verbose 2
loglevel 4
logfile /var/log/rsnapshot/
exclude_file /data/backup/tecmint.exclude
rsync_long_args --delete --numeric-ids --delete-excluded
lockfile /var/run/rsnapshot.pid
backup /tecmint/ localhost/
backup /etc/ localhost/
backup [email :/home/ /data/backup/
ตัวเลือกข้างต้นและคำอธิบายข้อโต้แย้งทั้งหมดมีดังนี้:
- config_version 1.2=เวอร์ชันไฟล์การกำหนดค่า
- snapshot_root=ปลายทางการสำรองข้อมูลเพื่อจัดเก็บสแน็ปช็อต
- cmd_cp=เส้นทางที่จะคัดลอกคำสั่ง
- cmd_rm=เส้นทางที่จะลบคำสั่ง
- cmd_rsync=เส้นทางสู่ rsync
- cmd_ssh=เส้นทางสู่ SSH
- cmd_logger=พาธไปยังอินเทอร์เฟซคำสั่งเชลล์ไปยัง syslog
- cmd_du=เส้นทางไปยังคำสั่งการใช้งานดิสก์
- ช่วงเวลารายชั่วโมง=จำนวนการสำรองข้อมูลรายชั่วโมงที่ต้องเก็บไว้
- ช่วงเวลารายวัน=จำนวนการสำรองข้อมูลรายวันที่ต้องเก็บไว้
- ช่วงเวลารายสัปดาห์=จำนวนการสำรองข้อมูลรายสัปดาห์ที่ต้องเก็บไว้
- ช่วงเวลาต่อเดือน=จำนวนการสำรองข้อมูลต่อเดือนที่ต้องเก็บไว้
- ssh_args=อาร์กิวเมนต์ SSH เสริม เช่น พอร์ตอื่น (-p )
- คำกริยา=อธิบายตนเอง
- ระดับบันทึก=อธิบายได้ในตัว
- logfile=เส้นทางไปยังไฟล์บันทึก
- exclude_file=เส้นทางไปยังไฟล์ที่ยกเว้น (จะอธิบายรายละเอียดเพิ่มเติม)
- rsync_long_args=อาร์กิวเมนต์ยาวที่จะส่งผ่านไปยัง rsync
- lockfile=อธิบายตนเองได้
- การสำรองข้อมูล=เส้นทางแบบเต็มไปยังสิ่งที่จะสำรองข้อมูลตามด้วยเส้นทางสัมพันธ์ของตำแหน่ง
ขั้นตอนที่ 4: ตรวจสอบการกำหนดค่า Rsnapshot
เมื่อคุณกำหนดค่าทั้งหมดเสร็จแล้ว ก็ถึงเวลาตรวจสอบว่าทุกอย่างทำงานตามที่คาดไว้ เรียกใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่าการกำหนดค่าของคุณมีไวยากรณ์ที่ถูกต้อง
rsnapshot configtest
Syntax OK
หากทุกอย่างถูกต้อง คุณจะได้รับข้อความ “Syntax OK ” หากคุณได้รับข้อความแสดงข้อผิดพลาด นั่นหมายความว่าคุณต้องแก้ไขข้อผิดพลาดเหล่านั้นก่อนที่จะเรียกใช้ rsnapshot
จากนั้น ให้ทำการทดสอบกับสแน็ปช็อตรายการใดรายการหนึ่งเพื่อให้แน่ใจว่าเรากำลังสร้างผลลัพธ์ที่ถูกต้อง เราใช้พารามิเตอร์ “รายชั่วโมง” เพื่อทำการทดสอบการทำงานโดยใช้อาร์กิวเมนต์ -t (test) คำสั่งด้านล่างนี้จะแสดงรายการโดยละเอียดของสิ่งที่จะทำโดยไม่ต้องทำจริง
rsnapshot -t hourly
ผลลัพธ์ตัวอย่าง
echo 2028 > /var/run/rsnapshot.pid
mkdir -m 0700 -p /data/backup/
mkdir -m 0755 -p /data/backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
/backup/hourly.0/localhost/
mkdir -m 0755 -p /backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
/backup/hourly.0/localhost/
mkdir -m 0755 -p /data/backup/hourly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
/usr/local /data/backup/hourly.0/localhost/
touch /data/backup/hourly.0/
หมายเหตุ: คำสั่งข้างต้นจะบอก rsnapshot ให้สร้างการสำรองข้อมูล “รายชั่วโมง” จริงๆ แล้วมันจะพิมพ์คำสั่งที่มันจะดำเนินการเมื่อเราดำเนินการจริงๆ
ขั้นตอนที่ 5: เรียกใช้ Rsnapshot ด้วยตนเอง
หลังจากยืนยันผลลัพธ์แล้ว คุณสามารถลบตัวเลือก “-t ” เพื่อรันคำสั่งจริงๆ ได้
rsnapshot hourly
คำสั่งดังกล่าวจะเรียกใช้สคริปต์สำรองข้อมูลด้วยการกำหนดค่าทั้งหมดที่เราเพิ่มในไฟล์ rsnapshot.conf และสร้างไดเรกทอรี “สำรอง” จากนั้นสร้างโครงสร้างไดเรกทอรีด้านล่าง ที่จัดระเบียบไฟล์ของเรา หลังจากรันคำสั่งด้านบนแล้ว คุณสามารถตรวจสอบผลลัพธ์ได้โดยไปที่ไดเร็กทอรีสำรองและแสดงรายการโครงสร้างไดเร็กทอรีโดยใช้คำสั่ง ls -l ดังที่แสดง
cd /data/backup
ls -l
total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0
ขั้นตอนที่ 6: ทำให้กระบวนการเป็นอัตโนมัติ
เพื่อทำให้กระบวนการเป็นอัตโนมัติ คุณต้องกำหนดเวลาให้ rsnapshot ทำงานในช่วงเวลาที่กำหนดจาก Cron ตามค่าเริ่มต้น rsnapshot จะมาพร้อมกับไฟล์ cron ภายใต้ “/etc/cron.d/rsnapshot“ หากไม่มีอยู่ ให้สร้างไฟล์ขึ้นมาและ เพิ่มบรรทัดต่อไปนี้ลงไป
โดยค่าเริ่มต้น กฎจะมีการแสดงความคิดเห็น ดังนั้นคุณต้องลบ “# ” ออกจากด้านหน้าส่วนการกำหนดเวลาเพื่อเปิดใช้งานค่าเหล่านี้
This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
0 3 * * 1 root /usr/bin/rsnapshot weekly
30 2 1 * * root /usr/bin/rsnapshot monthly
ให้ฉันอธิบายอย่างชัดเจนว่ากฎ cron ข้างต้นทำอะไร:
- ทำงานทุกๆ 4 ชั่วโมง และสร้างไดเร็กทอรี รายชั่วโมง ภายใต้ไดเร็กทอรี /backup
- ทำงานทุกวันเวลา 03:30 น. และสร้างไดเร็กทอรี รายวัน ภายใต้ไดเร็กทอรี /backup
- รัน รายสัปดาห์ ทุก ๆ วันจันทร์ เวลา 03:00 น. และสร้างไดเร็กทอรี รายสัปดาห์ ภายใต้ /backup ไดเรกทอรีที่แข็งแกร่ง>
- รันทุก รายเดือน เวลา 02:30 น. และสร้างไดเร็กทอรี รายเดือน ภายใต้ไดเร็กทอรี /backup
เพื่อให้เข้าใจวิธีการทำงานของ กฎ cron ได้ดีขึ้น ฉันขอแนะนำให้คุณอ่านบทความของเราที่อธิบายไว้
- 11 ตัวอย่างการตั้งเวลา Cron
ขั้นตอนที่ 7: รายงาน Rsnapshot
rsnapshot มอบ สคริปต์ Perl การรายงานเล็กๆ น้อยๆ ที่มีประโยชน์ ซึ่งจะส่ง การแจ้งเตือนทางอีเมล ถึงคุณพร้อมรายละเอียดทั้งหมดเกี่ยวกับสิ่งที่เกิดขึ้นระหว่างการสำรองข้อมูลของคุณ ในการตั้งค่าสคริปต์นี้ คุณต้องคัดลอกสคริปต์ไว้ที่ใดที่หนึ่งภายใต้ “/usr/local/bin” และทำให้สคริปต์นั้นสามารถเรียกใช้งานได้
cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
chmod +x /usr/local/bin/rsnapreport.pl
จากนั้น เพิ่มพารามิเตอร์ “–stats” ในไฟล์ “rsnapshot.conf” ของคุณไปยังส่วนอาร์กิวเมนต์แบบยาวของ rsync
vi /etc/rsnapshot.conf
rsync_long_args --stats --delete --numeric-ids --delete-excluded
ตอนนี้แก้ไข กฎ crontab ที่เพิ่มไว้ก่อนหน้านี้ และเรียกใช้สคริปต์ rsnapreport.pl เพื่อส่งรายงานไปยังที่อยู่อีเมลที่ระบุ
This is a sample cron file for rsnapshot.
The values used correspond to the examples in /etc/rsnapshot.conf.
There you can also set the backup points and many other things.
#
To activate this cron file you have to uncomment the lines below.
Feel free to adapt it to your needs.
0 */4 * * * root /usr/bin/rsnapshot hourly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email
30 3 * * * root /usr/bin/rsnapshot daily 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email
0 3 * * 1 root /usr/bin/rsnapshot weekly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email
30 2 1 * * root /usr/bin/rsnapshot monthly 2>&1 | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email
เมื่อคุณเพิ่มรายการข้างต้นอย่างถูกต้องแล้ว คุณจะได้รับรายงานไปยังที่อยู่อีเมลของคุณที่คล้ายกับด้านล่าง
SOURCE TOTAL FILES FILES TRANS TOTAL MB MB TRANS LIST GEN TIME FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/ 185734 11853 2889.45 6179.18 40.661 second 0.000 seconds
ลิงค์อ้างอิง
- หน้าแรกของ rsnapshot
ตอนนี้เท่านั้น หากมีปัญหาใด ๆ เกิดขึ้นระหว่างการติดตั้งโปรดส่งความคิดเห็นถึงฉัน จนกว่าจะคอยติดตาม TecMint เพื่อดูบทความที่น่าสนใจเพิ่มเติมเกี่ยวกับโลกโอเพ่นซอร์ส