shell实现目录增量备份的示例代码
auto_backup_system.sh
#针对目录进行备份;每周1-6执行增量备份,每周日(值为:0 or 7)执行全备份
#!/bin/bash#Automatic Backup Linux System Files#By Author xiaoheiyaoshangtian#2024/x/xsource_dir=($*)target_dir=/tmpyear=$(date +%Y)month=$(date +%m)day=$(date +%d)week=$(date +%u)files=system_backup.tar.gzcode=$?if [ -z $source_dir ];then echo -e "Please Enter File or Directory You Need to Backup:\n--------------------------------------------------\nExample $0 /boot /etc ......" exitfi#determin whether the target directory existsif [ ! -d $target_dir/$year/$month/$day ];then mkdir -p $target_dir/$year/$month/$day echo "This $target_dir/$year/$month/$day created successfully!"fi#exec full backup function commandfull_backup(){ if [ "$week" -eq "0" ];then rm -rf $target_dir/snapshot cd $target_dir/$year/$month/$day tar -g $target_dir/snapshot -czvPf $files $(echo ${source_dir[@]}) [ "$code" == "0" ] echo -e "---------------------------------------\nfull_backup system files backup successfully!" fi}#perform incremental backup function commandadd_backup(){ cd $target_dir/$year/$month/$day if [ -f $target_dir/$year/$month/$day/$files ];then read -p "$files already exists,overwrite confirmation yes or no(default yes)?:" sure if [ "$sure" == "no" -o "$sure" == "n" -o "$sure" == "N" -o "$sure" == "NO" -o "$sure" == "No" ];then sleep 1 exit 0 fi if [ $week -ne "0" ];then cd $target_dir/$year/$month/$day tar -g $target_dir/snapshot -czvPf $$_$files $(echo ${source_dir[@]}) [ "$code" == "0" ] echo -e "---------------------------------------\nadd_backup system files backup successfully!" fi else if [ $week -ne "0" ];then cd $target_dir/$year/$month/$day tar -g $target_dir/snapshot -czvPf $files $(echo ${source_dir[@]}) [ "$code" == "0" ] echo -e "---------------------------------------\nadd_backup system files backup successfully!" fi fi }full_backupadd_backup
验证:
[root@logstash ~]# sh auto_backup_system.shPlease Enter File or Directory You Need to Backup:--------------------------------------------------Example auto_backup_system.sh /boot /etc ......[root@logstash ~]# [root@logstash ~]# sh auto_backup_system.sh /tmpThis /tmp/2024/06/21 created successfully!tar: /tmp: Directory is newtar: /tmp/.ICE-unix: Directory is newtar: /tmp/.Test-unix: Directory is newtar: /tmp/.X11-unix: Directory is newtar: /tmp/.XIM-unix: Directory is newtar: /tmp/.font-unix: Directory is newtar: /tmp/2024: Directory is newtar: /tmp/2024/06: Directory is newtar: /tmp/2024/06/21: Directory is new/tmp//tmp/.ICE-unix//tmp/.Test-unix//tmp/.X11-unix//tmp/.XIM-unix//tmp/.font-unix//tmp/2024//tmp/2024/06//tmp/2024/06/21//tmp/snapshot/tmp/2024/06/21/system_backup.tar.gz---------------------------------------add_backup system files backup successfully![root@logstash ~]# [root@logstash ~]# sh auto_backup_system.sh /tmpsystem_backup.tar.gz already exists,overwrite confirmation yes or no(default yes)?:no[root@logstash ~]# [root@logstash ~]# sh auto_backup_system.sh /tmpsystem_backup.tar.gz already exists,overwrite confirmation yes or no(default yes)?:/tmp//tmp/.ICE-unix//tmp/.Test-unix//tmp/.X11-unix//tmp/.XIM-unix//tmp/.font-unix//tmp/2024//tmp/2024/06//tmp/2024/06/21//tmp/2024/06/21/2577_system_backup.tar.gz---------------------------------------add_backup system files backup successfully![root@logstash ~]#
[root@logstash tmp]# ls2024 snapshot[root@logstash tmp]# [root@logstash tmp]# cd 2024/[root@logstash 2024]# cd 06/21/[root@logstash 21]# ls2577_system_backup.tar.gz system_backup.tar.gz[root@logstash 21]#
shell实现目录增量备份的示例代码