NAS 백업을 수행하기 위해 간단한 스크립트를 만들었습니다. 나는 이렇게 한다:
date="$(date +%Y-%m-%d)"
base="/backup"
newest="$(ls -1td "$base"/*-*-*/ | head -n 1)"
today="$base/$date"
dirs="pub,data,software"
if [ -d "$today" ]; then
echo "Backup already exists"
exit 1
fi
echo $newest
echo $dirs
mkdir "$today"
rsync -a --delete --info=progress2 "/myzpool/{$dirs}" "$today" --link-dest="$newest"
따라서 해야 할 일은 현재 날짜라는 폴더를 만든 다음 /myzpool/pub
새로 생성된 백업 폴더에 폴더를 복사하는 것입니다. 그러나 놀랍게도 이것은 작동하지 않습니다! 오류로 인해 중단되었습니다./myzpool/data
/myzpool/software
rsync
rsync: link_stat "/myzpool/{pub,data,software}" failed: No such file or directory
SSH를 통해 가상 서버를 백업하기 위해 매우 유사한 스크립트를 사용하기 때문에 이런 일이 발생하는 이유를 이해할 수 없습니다.
dirs="srv,opt,home,root,etc"
mkdir "$today"
rsync -caz --compress-level=9 -e "ssh -i ~/.ssh/myserver.conf" --delete --info=progress2 "[email protected]:/{$dirs}" "$today" --link-dest="$newest"
그리고 가상 서버를 사용하면 잘 작동합니다. 그러면 이 두 명령줄의 차이점은 무엇이며 스크립트가 로컬에서도 실행되도록 어떻게 수정합니까?
답변1
방금 비슷한 문제가 발생하여 지원 확장을 확인했습니다.하다명령 대체에서 작동합니다.
문제는 버팀대 확장이 다른 것보다 먼저 일어나기 때문에 두 번째로 버팀대 확장이 이루어지도록 rsync
이렇게 실행 해야 한다는 것입니다.eval rsync ...