이 cron 스크립트를 사용하여 Rsync를 작동시키려고 합니다.
*/1 * * * * /root/backup.sh `date +today/\%M`
그리고 아래와 같은 쉘 스크립트
#!/bin/bash -x
PATH=/bin:/usr/bin:/sbin:/usr/sbin
REMOTE="REMOTEADDRESS"
RSYNC=/usr/bin/rsync
댓글: 이게 효과가 있어요
$RSYNC -aqz --exclude-from '/home/root/backups/backup-exclude.txt' /var/www/html $REMOTE:backups/
댓글: 실패했어요
$RSYNC -aqz --exclude-from '/home/root/backups/backup-exclude.txt' /var/www/html $REMOTE:$1/
전달된 매개변수가 스크립트에 올바르게 전달되지 않는 이유를 이해할 수 없습니다. 로그에는 모든 것이 예상대로 표시됩니다.
cron 업데이트 스크립트에 매개변수를 포함하지 않고 매개변수를 전달하는 이유는 다음을 허용하는 백업 계획을 세우기 위한 것입니다. - 일일 시간별 백업 백업 - 월별 백업 일일 백업 - 월별 내구성 있는 백업
매개변수 전달 시 발생하는 오류는 RSync가 원격 서버에서 mkdir을 수행할 수 없다는 것입니다. 모든 정적 라인과 함께 사용할 수 있습니다. 로그에는 현재 cron을 사용할 때 전달된 올바른 디렉터리가 표시됩니다.
답변1
dest/dir
복사하려는 디렉터리가 원격 시스템( )에 있는지 확인해야 합니다.
rsync -aqz ./ user@host:dest/dir
최소한 마지막 디렉터리를 제외한 모든 디렉터리가 이미 존재해야 합니다. 이는 mkdir과 동일한 동작입니다 mkdir
. mkdir은 마지막 디렉터리만 생성합니다(기본적으로 이 -p
옵션으로 변경할 수 있습니다). 즉, 원격 시스템에 존재하지 않는 한 rsync
실패합니다./home/user/dest/dir
그것은 관련이 있다비교적목차.
에서도 같은 상황이 발생합니다순수한디렉토리(로 시작하는 디렉토리 /
):
rsync -aqz ./ user@host:/home/user/dest/dir
규칙은 정확히 동일하지만 디렉토리는 다릅니다.추정사용자의 홈 디렉터리에 위치하지만 어디에나 위치할 수 있습니다(물론 사용자에게 쓰기 권한이 있어야 함).
rsync
추가 테스트에서 if 가 다음과 같은 디렉토리를 사용한다는 것을 발견했습니다 .
newdir/testdir
최소한 newdir 디렉토리가 존재해야 합니다. 이는 mkdir과 완전히 동일합니다. dir이 mkdir newdir/testdir
없으면 newdir
A는 실패합니다.
보고하신 것과 동일한 스크립트를 사용하여 테스트했습니다.
- 고정 디렉토리와 함께 사용됩니다.
- 인수에 지정된 디렉토리,
- 스크립트 인수
$1
에 지정된 디렉토리 - 위의 모든 작업은 cron 유무에 관계없이 반복됩니다.
모든 경우에 초기 디렉터리가 누락되었습니다.두 부분디렉터리 가져오기 rsync에 실패했습니다.