시스템을 백업하기 위해 rsync를 사용하여 무엇을 포함하고 제외해야 합니까?

시스템을 백업하기 위해 rsync를 사용하여 무엇을 포함하고 제외해야 합니까?

나는 하루 종일 rsync를 시도했지만 exclude-from성공 include-from하지 못하고 완전히 사라졌습니다. 내가 찾은 예제나 도움말 중 어느 것도 정확하지만 매우 간단한 요구 사항에 대한 답을 찾을 수 없으며, 작동하도록 할 수 없거나 원하는 결과를 얻지 못하고 그 이유를 이해할 수 없습니다.

매일 자동 백업을 설정하려고 하는데, 지난 며칠간 시도해 본 결과,이 아주 좋은 웹사이트, 증분 백업을 면밀히 관찰하고 모든 것이 잘 작동하는지 테스트하는 동안 제외 및 포함 없이 /home/Harry 디렉토리를 연습 실행하는 단계에 도달했으며 그것도 잘 작동합니다. 나는 또한 나를 위해 그것을 실행하기 위해 cron 작업을 구성했습니다.

누군가가 rsync 및 cron 이외의 다른 것을 사용하도록 제안하기 전에, 매일 밤 11시부터 30시까지 실행하고 몇 분 후에 컴퓨터를 종료하도록 예약할 예정입니다. 이것은 테스트에서도 잘 작동했습니다. 그날은 백업할 것이 없기 때문에 컴퓨터가 켜져 있지 않아도 상관없습니다.

더 많은 진전을 이루기 위해 Mark Sobell의 "A Practical Guide to Fedora and Red Hat LInux"(7판 607페이지) 및 기타 소스의 제안을 사용하여 개선하고 싶습니다.포함하다 /home/, 및 ;/var//usr/local//etc/들어오지 못하게 하다 /tmp/, /var/tmp/, /usr/tmp/, /proc/,/sys/ 및 /var/cache/.

저는 묻고 싶습니다. 우선 이 목록이 타당한가요? 둘째: rsync 호출에서 이 요구 사항을 어떻게 지정합니까?


내 질문에 답변한 후 추가했습니다.

내 원래 질문에 답변해 주신 모든 분들께 감사드립니다. 이제 아래 스크립트에 나열된 작업 솔루션이 생겼습니다. 내 경험은 비슷한 것을 시도하는 사람에게 유용할 수 있습니다. Michael Horner는 나에게 무엇이 잘못되었는지 보여달라고 요청했습니다. 이 루프의 작동 방식과 필요한 최소 저장 공간에 대한 전체 설명은 참조 웹사이트를 참조하세요.

이전 실험은 스크립트의 주석 처리된 줄에 기록되었으며 이것이 제가 테스트에 사용한 것입니다. 처음에는 일부 테스트 파일을 백업하고 나중에 백업을 외부 하드 드라이브에 저장하려고 시도했습니다. 내 접근 방식은 무언가를 변경할 때 원본 콘텐츠를 유지하고 주석 처리하여 변경 사항을 기록하여 필요한 경우 다시 돌아갈 수 있도록 하는 것입니다.

CA6으로 시작하는 긴 식별자는 아마도 10일 단위로 매일 백업을 저장하려는 1TB 외장 하드 드라이브에 대한 것입니다. 또한 매주 백업에 사용하는 750GB 드라이브도 있습니다. 아마도 1년에 한 번 정도일 것입니다. 스크립트 끝부분에서 이 루프에 여전히 주의가 필요하다는 것을 알 수 있습니다.

충돌이 발생하면 시스템을 정확히 복원해야 하는지는 상관하지 않습니다. 저는 이전에 세 대의 컴퓨터를 소유했는데 그 중 하나도 고장이 나지 않았습니다. 하지만 외장 하드 드라이브에 수동 백업을 보관했고 이제는 이를 필요한 모든 자료의 소스로 사용하고 있습니다. 따라서 간단한 설치부터 시작한 다음 필요에 따라 필요한 것을 추가하겠습니다.

exclude-from내 질문에서 알 수 있듯이 rsync 를 사용해 보았지만 include-from필요한 파일의 형식을 파악할 수 없었습니다. 나중에 긴 목록을 파일에 넣어 볼 수도 있습니다.

#!/bin/bash
# Adapted from: http://webgnuru.com/linux/rsync_incremental.php
#  Website Backup Script
#======================================================================
# Define Variables
# Todays date in ISO-8601 format e.g. 2013-10-19:
DAY0=`date -I` 
# Yesterdays date in ISO-8601 format:
DAY1=`date -I -d "1 day ago"`
# The source directory:
SRC="/home/Harry/testrsync/bravo/"
#SRC="/home/Harry/"
# Filename of list of files to include
INC="/home/Harry/testrsync/include"
# Filename of file list to exclude
EXC="/home/Harry/testrsync/exclude"
# The target directory:
#TRG="/home/Harry/testrsync/backups/$DAY0"
TRG="/run/media/Harry/CA6C321E6C32062B/annals/$DAY0"
# The link destination directory:
#LNK="/home/Harry/testrsync/backups/$DAY1"
LNK="/run/media/Harry/CA6C321E6C32062B/$DAY1"
# The log file
#LOG="--logfile="/home/Harry/testrsync/backups/bulog --log-file-format="%t\n";""
LOG="--log-file=/home/Harry/testrsync/backups/bulog"
#The rsync options:
#OPT="--dry-run -avh --delete --link-dest=$LNK"
OPT="-aAXvh --delete --link-dest=$LNK"
#OPT="-ah --delete --link-dest=$LNK"
#======================================================================
#Execute the backup
#rsync -avvv $OPT --include-from=$INC --exclude-from=$EXC $SRC $TRG $LOG
#rsync -avv $OPT --include-from=$INC $SRC $TRG $LOG
#rsync $OPT--delete --stats --exclude-from=$EXC /home/Harry /var /usr/local /etc $TRG $LOG
rsync $OPT --exclude {"/dev/*","/proc/*","/sys/*","/tmp/*","/usr/tmp/*","/run/*","/mnt/*","/media/*","/var/cache/*","var/tmp/*","/","/lost+found"} /* $TRG $LOG
#Delete old backups cyclically
# for my tests I am going to use a three day cycle
DAY4=`date -I -d "4 days ago"`
#Delete the backup from 4 days ago, if it exists
if [ -d /home/Harry/testrsync/backups/$DAY4 ]
then
rm -r /home/Harry/testrsync/backups/$DAY4
#rm -r /run/media/HarryCA6C321E6C32062B/$DAY4
fi
# Cron does not output to a screen, so no result from next line
# zenity --info --text='Backup complete' --title="Backup Test"

답변1

(루트 파일 시스템)을 포함 /하고 백업하려는 다른 파일 시스템의 루트를 포함합니다(예를 들어 /home별도의 파티션에 있는 경우 해당 루트도 포함). -x다른 모든 파일 시스템(예: /proc및 메모리 내 파일 시스템 /sys, 마운트된 이동식 미디어, 원격 파일 시스템 등)을 제외하려면 이 옵션을 사용합니다 .

백업하고 싶지 않은 파일을 제외하세요. /tmp일반적인 후보일 수도 있고 /var/tmp일부 디렉토리 등일 수도 있습니다./var/cache

백업 공간은 비용이 많이 들기 때문에 소프트웨어 패키지에서 설치된 프로그램과 같이 쉽게 복구할 수 있는 파일은 백업하고 싶지 않을 것입니다. 따라서 /usr제외 해야 합니다 /usr/local. 바라보다Rsync 필터: 하나의 패턴만 복사rsync 포함 및 제외 목록에 대한 소개 가이드입니다. 당신은 다음과 같은 것을 원할 것입니다

rsync -ax --exclude='/tmp/*' --include=/usr/local --exclude=/usr / backup:

답변2

rsync를 사용하여 전체 시스템 백업을 수행할 수 있습니다. 불필요한 모든 디렉토리에 대해 --exlude=PATTERN을 사용할 수 있습니다.

rsync - 빠르고 다양한 원격(및 로컬) 파일 복사 도구

  -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
  -A,  --acls                 preserve ACLs (implies -p)
  -X, --xattrs                preserve extended attributes
  -v, --verbose               increase verbosity

예:

  rsync -aAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/usr/tmp/*","/run/*","/mnt/*","/media/*","/var/cache/*","/","/lost+found"} /* /path/to/some/backup/folder

답변3

그래서--들어오지 못하게 하다파일은 다음과 같습니다:

var/tmp/
var/cache/

다음과 같이 rsync를 사용하십시오.

rsync -aAv --delete --stats --exclude-from /excludes /home /var /usr/local /etc /Backup/

답변4

기반으로백업에는 어떤 폴더가 포함됩니까?, 표시된 폴더/파일을 제외하기로 선택했습니다.

#!/bin/bash

sudo rsync -aAXvlH --delete --exclude={"/bin/*","/boot/*","/dev/*","/home/*","/lib/*","/lib32/*","/lib64/*","/media/*","/mnt/*","/NAS/*","/Pool-1tb/*","/Pool-500gb/*","/proc/*","/run/*","/sbin/*","/srv/*","/sys/*","/tmp/*","/usr/bin/*","/usr/games/*","/usr/include/*","/usr/lib/*","/usr/lib32/*","/usr/libexec/*","/usr/sbin/*","/usr/share/*","/usr/src/*",".Trash*"} / /NAS/System\ Files/

이것이 내가 사용하는 플래그입니다:

-a - Archive mode includes among other things, the options -o and -g, which preserves owners and groups. This requires that you run rsync as root.
-A - Preserve Access Control List.
-X - Preserve extended attributes.
-v - It will show the progress of the backup.
-l - Copy symlinks as symlinks.
-H - Preserve hard links.

그런 다음 위 코드가 포함된 파일에 대한 cron 작업을 만들었습니다.

Synology에서 rsync를 실행할 때 발생하는 수많은 심볼릭 링크 오류를 해결하려면 Control Panel / File Services / SMB / Advanced Settings"공유 폴더에서 심볼릭 링크 허용" 옆의 확인란을 선택해야 했습니다. 사용하는 NAS에 따라 비슷한 설정이 있을 수 있습니다.

이 내용이 도움이 되었다면 투표해 보세요. 건설적인 비판도 환영합니다. 감사해요!

관련 정보