현재 저는 crontab
백업 방법으로 매주 금요일 오전 3시에 내 컴퓨터에서 작업을 실행합니다. 이 작업은 rsync
서버에서 외부 하드 드라이브로 파일을 동기화하는 명령을 실행하는 bash 스크립트를 실행합니다 . 이 플래그는 rsync 명령에서 rsync 등 --include-from
의 파일 목록을 가져오는 데 사용됩니다.*.cpp *.h
안타깝게도 내 하드 드라이브의 공간이 부족하여 동일한 저장 공간을 가진 다른 드라이브로 교체하고 싶습니다. 그대로 rsync를 계속하면 두 번째 드라이브가 첫 번째 드라이브와 동일하고 가득 차게 되므로 아무 것도 얻지 못할 것입니다.
이상적으로는 외장 드라이브를 교체한 날짜보다 최신인 파일만 rsync하고 싶습니다 --include-from
(예를 들어 오늘 드라이브를 교체한 다음 포함 파일 목록에 있는 파일을 rsync하고 싶습니다그리고2015년 3월 27일 업데이트됨). 이렇게 하면 첫 번째 드라이브의 연속이 됩니다.
온라인에서 찾을 수 있는 모든 것은 find
먼저 날짜보다 최신 파일 목록을 가져온 다음 해당 목록 을 rsync
. find
섬기는 사람? 더 나은 옵션이 있습니까? rsync
파일이 마지막으로 수정된 날짜를 확인하는 플래그일까요?
감사해요
답변1
이전 디스크를 사용하여 마지막 백업 후에 타임스탬프를 생성한 다음 해당 타임스탬프 이후의 파일을 백업합니다. find
및 플래그를 사용하여 --newer
타임스탬프보다 최신 파일을 나열한 다음 --file-from
및 플래그를 사용하여 rsync
복사할 파일 목록을 지정합니다.
그게 다야 :
1단계: 새 드라이브로 변경하기 전에:touch /someplace/timestamp.txt
2단계: 새 디스크로 교체합니다.
3단계: 다음 작업을 수행하도록 cronjob 스크립트를 수정합니다.
find BLAH BLAH BLAH -newer /someplace/timestamp.txt -type f -print0 >/tmp/list rsync -avP --inplace --file-from=/tmp/list --from0 desthost:/dest/place
/someplace/timestamp.txt 파일을 변경하거나, 만지거나, 수정하지 마십시오.
답변2
아마도 서버에 대한 SSH 액세스 권한이 있습니까? 그래서
- 둘 중 하나: 서버에 로컬 머신에 대한 SSH 액세스 권한을 부여한 다음 다음과 같은 것을 사용하십시오.
ssh you@server 'find ... | xargs -0 -I {} rsync "{}" you@yourmachine:/media/dir'
- 또는 다음을 사용하여 서버에 파일
find
목록 을 만듭니다.
하지만 나는 이것이 마음에 들지 않는다고 말해야 한다. 전체 파일을 복구하려면 여전히 두 개의 백업 디스크(이전 디스크와 새 디스크)가 필요하며 복구가 복잡할 수 있습니다. 이 전략을 개선할 수 있는 몇 가지 방법을 생각해 볼 수 있지만 귀하의 경우 가장 쉬운 방법은 새 전략을 얻는 것입니다.큰동일한 크기의 새 디스크 대신 디스크. 당연히 추가 비용이 그렇게 크지 않죠?