w ake/ s leep b ac k u p- 'Wakes Up'USB 드라이브, rsync 및 powers off
WSBKP는 래퍼 쉘 스크립트로 저렴하고 쉽게 (부분적으로) '오프라인'백업을 생성합니다. 파일 레벨 백업은 RSYNC를 사용하여 데이터를 외부 (USB) 디스크에 대처하여 생성됩니다. 백업 중에만 디스크를 온라인으로 사용하면 데이터 격리 및 (일부) 암호화 사물함에 대한 보호와 같은 이점을 제공 할 수 있습니다.
Linux에서 실행되며 Rsync 외에 HDPARM 및 UDISKSCTL을 사용합니다. 모든 USB 컨트롤러와 드라이브가 작동하도록 보장되는 것은 아닙니다.
실행되면 출력은 다음과 같습니다.
root@host: ~ # wsbkp.sh
[2020-01-01 17:58:20] Powering on drive (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)...
- INFO: Resetting devices from /sys/bus/pci/drivers/ehci-pci...
- INFO: Resetting devices from /sys/bus/pci/drivers/ohci-pci...
[2020-01-01 17:58:28] Using backup device " /dev/sdb5 " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
- INFO: Mounted " /dev/sdb5 " " /mnt/bkp "
* Command: " rsync -aA --info=flist0,name0,progress2,stats2 --progress --stats "
* Dir(s): " / "
* Target drive: " /dev/sdb5 " mounted on " /mnt/bkp " (UUID=abc12345-1234-1234-1234-aaaabbbbcccc)
* Exclude:
/proc/
/sys/
/lost+found/
/mnt/
/run/
/tmp/
[2022-03-26 17:58:28] Backup SOURCE DIR: " / " to DESTINATION: " /mnt/bkp/ "
* Syncing complete, listing " /mnt/bkp " ...
total 100
drwxr-xr-x 26 root root 4096 Mar 11 06:11 .
drwxr-xr-x 14 root root 4096 Apr 26 2021 ..
drwxrwxr-x 2 root root 4096 Jan 28 06:54 bin
drwxr-xr-x 4 root root 4096 Mar 11 06:15 boot
drwxr-xr-x 17 root root 4096 Mar 26 17:29 dev
drwxr-xr-x 194 root root 12288 Mar 26 14:30 etc
< -- CUT -- >
[2021-0-01 18:24:57] Done. Powering off
Wake/Sleep Backup
-----------------
SYNOPSIS: wake up usb drive, rsync, power off
USAGE: wsbkp.sh -[o|p][w|s][m|u][l][f] [dirs to backup]
OPTIONS: [-p]|[-o] power on | power off
[-w]|[-s] wakeup | sleep
[-m]|[-u] mount | umount
[-l] list drive info
[-d] skip dev detection
[dirs to backup] overwrites setting in script
또한이 Args는 rsync로 전달됩니다. --verbose , --dry-run , --force , --ignore-errors 및 모든 --delete 옵션으로 전달됩니다.
DST에서 추가 DIR/파일을 삭제하여 정리하려면 실행 : ./wsbkp.sh --delete -y
스크립트는 예를 들어 '/usr/local/sbin'(권장)에 위치 할 수 있습니다.
rsync, hdparm 및 udisksctl (udisks2)이 설치되어 있는지 확인하십시오.
대상 백업 장치는 UUID, 쓰기 가능한 파일 시스템 및 충분한 무료 디스크 공간과 함께 사용할 수 있어야합니다.
루트로 실행하십시오. 명령 줄 인수가 필요하지 않으며 모든 옵션은 스크립트 내부에 설정됩니다. 로그 파일이 여기에서 작성됩니다 : '/var/log/wsbkp.log'.
'사용법'에 나열된 옵션은 백업이 완료된 후 드라이브가 자동으로 전원이 꺼지지 않는 경우를 의미합니다. 이 경우 wsbkp.sh -o 로 수동으로 다시 시도하십시오
다른 옵션은 구성과 다른 소스 디렉토리를 한 번 백업하는 것입니다.
wsbkp.sh /home/user/important /root/more_stuff
하나 이상의 파일을 복원하려면 먼저 wsbkp.sh -p 실행하여 드라이브에서 전원을 공급하고 wsbkp.sh -m 을 마운트하십시오.
완료되면 wsbkp.sh -u 로 드라이브를 "분리"한 다음 wsbkp.sh -o 로 전원을 끄십시오.
1) 백업 드라이브의 UUID 받기 :
wsbkp.sh -l 실행하면 드라이브 세부 사항이 표시되거나 Blkid를 실행해야합니다.
root@host:~# blkid
/dev/sdb1: UUID="bc12345-1234-1234-1234-aaaabbbbcccc" BLOCK_SIZE="1024" TYPE="ext4" PARTUUID="ab1c2345-01"
2) 스크립트 내부 설정 변경 :
DST_UUID= " abc12345-1234-1234-1234-aaaabbbbcccc " # uuid of backup device
DST_MNT= " /mnt/bkp " # dst/target path
BKP_DIRS= " / " # dirs to backup
EXCL_DIRS= "
--exclude=/proc/
--exclude=/sys/
--exclude=/lost+found/
--exclude=/mnt/
--exclude=/run/
--exclude=/tmp/
"DST_UUID가 올바른 UUID로 설정되어 있는지 확인하십시오.
기본값은 전체 파일 시스템 ( '/')을 백업하고 일부 DIRS를 제외하는 것입니다. 백업에 하나 이상의 DIRS를 지정할 수도 있습니다. 예 : BKP_DIRS="/etc/ /root/ /home/ /opt/ /usr/local/bin/"
3) 테스트 및 일정 :
올바른 설정을 확인하려면 스크립트를 수동으로 실행하십시오. RSYNC (진행/속도 등)에서 출력을 표시하기 위해 문제가 설정된 경우 OUT=/dev/stdout .
이러한 RSYNC ARG를 추가하는 것도 유용 할 수 있습니다. --verbose 및/OR- --dry-run .
모든 것이 잘되면 예를 들어 매주 실행하도록 스크립트를 예약하십시오. 아래 Cron 및 Systemd 구성 (쉘에 복사/붙여 넣기)을 참조하십시오.
스크립트를 루트로 실행 :
echo ' 0 3 * * 1 root /usr/local/sbin/wsbkp.sh >/dev/null 2>&1 ' > /etc/cron.d/wsbkpSystemD 타이머로 실행하려면 먼저 장치 파일을 만듭니다.
cat << EOF >/lib/systemd/system/wsbkp.service
[Unit]
Description=WakeSleep backup
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/wsbkp.sh
EOF
cat << EOF >/lib/systemd/system/wsbkp.timer
[Unit]
Description=WakeSleep backup scheduled to run every week
[Timer]
OnCalendar=weekly
[Install]
WantedBy=timers.target
EOF 그런 다음 타이머를 활성화하십시오 : systemctl enable --now wsbkp.timer
그리고 마지막으로 SystemD : systemctl daemon-reload
자세한 내용은 https://www.freedesktop.org/software/systemd/man/systemd.timer.html을 참조하십시오