현재 백업을 위한 공간이 충분하지 않으면 rsync는 이전 "--backup-dir" 디렉터리를 삭제합니다.

현재 백업을 위한 공간이 충분하지 않으면 rsync는 이전 "--backup-dir" 디렉터리를 삭제합니다.

rsync와 다음 두 스크립트를 사용하여 백업을 생성합니다.

스크립트 1:

#!/bin/bash

rsync --dry-run --stats -ab --human-readable --inplace --delete-delay --debug=NONE --log-file=/media/blueray/UltrastarDaily/rsync-WDPurple.log --backup-dir=purple_rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --exclude='lost+found' --exclude='.Trash-1000' /media/blueray/WDPurple /media/blueray/UltrastarDaily | sed -e '1,4d;6d;8,15d'

echo -e "\nDo you want to continue?"

while true; do
    case $yn in
        [Yy]* ) rsync --info=PROGRESS2,BACKUP,DEL -ab --human-readable --inplace --delete-delay --debug=NONE --log-file=/media/blueray/UltrastarDaily/rsync-WDPurple.log --backup-dir=purple_rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --exclude='lost+found' --exclude='.Trash-1000' /media/blueray/WDPurple /media/blueray/UltrastarDaily; break;;
        [Nn]* ) exit;;
        * ) read -p "Please answer yes or no: " yn;;
    esac
done

스크립트 2:

#!/bin/bash

rsync --dry-run --stats -ab --human-readable --inplace --delete-delay --debug=NONE --log-file=/media/blueray/UltrastarDaily/rsync-WDRed.log --backup-dir=red_rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --exclude='lost+found' --exclude='.Trash-1000' /media/blueray/WDRed /media/blueray/UltrastarDaily | sed -e '1,4d;6d;8,15d'

echo -e "\nDo you want to continue?"

while true; do
    case $yn in
        [Yy]* ) rsync --info=PROGRESS2,BACKUP,DEL -ab --human-readable --inplace --delete-delay --debug=NONE --log-file=/media/blueray/UltrastarDaily/rsync-WDRed.log --backup-dir=red_rsync_bak.$(date +"%d-%m-%y_%I-%M-%S%P") --log-file-format='%t %f %o %M' --exclude='lost+found' --exclude='.Trash-1000' /media/blueray/WDRed /media/blueray/UltrastarDaily; break;;
        [Nn]* ) exit;;
        * ) read -p "Please answer yes or no: " yn;;
    esac
done

출력은 다음과 같습니다.

UltrastarDaily% tree -L 1
.
├── lost+found
├── purple_rsync_bak.06-02-21_06-38-44am
├── purple_rsync_bak.06-02-21_07-41-32pm
├── purple_rsync_bak.07-02-21_08-02-51am
├── purple_rsync_bak.07-02-21_08-17-26am
├── purple_rsync_bak.08-02-21_02-00-06am
├── red_rsync_bak.01-02-21_06-11-39pm
├── red_rsync_bak.06-02-21_06-16-58am
├── red_rsync_bak.06-02-21_06-23-24am
├── red_rsync_bak.06-02-21_06-26-58am
├── red_rsync_bak.06-02-21_06-27-30am
├── red_rsync_bak.06-02-21_06-31-36am
├── red_rsync_bak.06-02-21_06-33-14am
├── red_rsync_bak.06-02-21_06-34-04am
├── red_rsync_bak.06-02-21_06-34-52am
├── red_rsync_bak.06-02-21_06-35-22am
├── red_rsync_bak.06-02-21_06-41-48am
├── red_rsync_bak.06-02-21_07-39-41pm
├── red_rsync_bak.07-02-21_08-01-14am
├── red_rsync_bak.07-02-21_08-17-41am
├── red_rsync_bak.07-02-21_08-38-52am
├── red_rsync_bak.08-02-21_01-56-43am
├── red_rsync_bak.27-01-21_06-13-39pm
├── red_rsync_bak.28-01-21_02-22-31pm
├── red_rsync_bak.30-01-21_12-48-03am
├── rsync-WDPurple.log
├── rsync-WDRed.log
├── WDPurple
└── WDRed

27 directories, 2 files

현재 백업을 위한 공간이 충분하지 않은 경우 (또는을 실행하여) 이전 디렉터리 purple_rsync_bak와 디렉터리를 삭제하고 싶습니다.red_rsync_bakScript 1Script 2

어떻게 해야 하나요?

답변1

연습 실행 시 rsync 출력에 의해 생성되지 않는 한 백업 크기를 얻는 방법을 모르겠습니다. 다음은 삭제가 발생하기 전에 필요한 나머지 공간과 비교하기 위해 변수에 사용할 숫자로 파티션에 남은 공간입니다. rsync가 발생하기 전에 Case 문에서 Yy를 비교하고 그 위에서 비교하고 (필요한 경우) 삭제할 수 있습니다.

root@buster-raspi:~# df -h | grep /dev/sda1
/dev/sda1       200M  117M   83M  59% /boot/firmware
root@buster-raspi:~# df -h | grep /dev/sda1 | cut -d " " -f13
83M
root@buster-raspi:~# df -h | grep /dev/sda1 | cut -d " " -f13 | tr -d M
83

아니면 백분율로 사용하세요.

root@buster-raspi:~# df -h | grep /dev/sda1 | cut -d " " -f15 | tr -d %
59

관련 정보