SSH
두 서버 (httpmydocs) A
간에 액세스 권한이 있으며 B
명령줄을 사용하여 주기적으로 데이터를 전송하고 있습니다.A
B
scp -rpC /var/www/httpmydocs/* mega_me@mega_debian.com:/var/www/httpmydocs
이제 매주 데스크톱 컴퓨터에서 서버로 데이터를 백업하고 싶습니다 A
. 이 명령줄을 수정하여 특정 시간과 날짜에 자동으로 실행되어 데스크탑 컴퓨터에서 서버로 데이터를 백업하는 스크립트가 되도록 어떻게 도와주실 수 있나요?A
답변1
scp
나는 이 작업을 사용하지 않을 것입니다 . rsync
어쩌면 .rdiff-backup
$ rsync -avz /var/www/httpmydocs/ \
mega_me@mega_debian.com:/var/www/httpmydocs/.
이 명령은 이 명령과 유사한 백업을 수행 scp
하지만 시간이 지남에 따라 변경된 증분 또는 새 파일만 전송하고 복사된 파일은 건너뜁니다.
의도에 따라 이 --delete
스위치를 사용하여 로컬에 더 이상 존재하지 않는 파일을 원격 백업에서 삭제할 수 있습니다.
예약된 작업으로 만들기 위해 cronjob에 넣었습니다. system-y 유형 디렉토리라는 점을 고려하면 빈도에 따라 /etc/cron.daily
또는 아래에 crontab 항목을 추가 하겠습니다. /etc/cron.weekly
위 rsync
명령을 쉘 스크립트에 넣고 실행 가능하게 만든 다음 어느 디렉토리에나 배치하면 이 두 가지 빈도 중 하나에서 발생합니다.
인용하다
답변2
특정 시간과 날짜가 꼭 필요한 경우 cron 작업을 사용해야 합니다. 이는 일반적으로 명령줄에서 실행하므로 반드시 시스템 작업일 필요는 없지만 일반적인 크론 작업일 수 있습니다. crontab -e
편집할 파일이 제공되며 하단에 추가할 수 있습니다.
10 2 * * 1 test -x /path/to/yourscript || /path/to/yourscript
첫 번째 필드는 분, 두 번째 필드는 시간, 다섯 번째 필드는 요일입니다.
파일은 /path/to/yourscript
실행 가능( )이어야 chmod +x
하며 다음과 같아야 합니다.
#!/bin/bash
scp -rpC /var/www/httpmydocs/* mega_me@mega_debian.com:/var/www/httpmydocs
이는 귀하의 요구 사항을 충족하지만 몇 가지 문제가 있습니다.
- 월요일 오전 2시 10분에 컴퓨터가 다운되면 시작되지 않습니다.
scp
매번 완전한 사본이 만들어집니다.
포인트 2의 경우 slm은 이미 적절한 솔루션을 제공했습니다.
yourscript
포인트 1은 crontab을 사용하지 않고 입력하여 해결할 수 있지만(slm도 지적했듯이) 매주 실행이 /etc/cron.weekly
지정된 시간(또는 순서대로 완료됨)에 실행되므로 실행 시간에 대한 제어력을 잃게 됩니다. 여기서 시간과 요일을 변경할 수 있지만 이는 실행 중인 다른 스크립트에도 영향을 미칩니다./etc/crontab
/etc/anacrontab
사용이 /etc/cron.weekly
허용되지 않는 경우 방법을 조정할 수 있습니다.내 대답은 여기에 있다일주일에 한 번 이상, 특정 시간 이후에 실행하세요.