rsync가 올바른 대상 디렉토리를 선택할 수 없습니다

rsync가 올바른 대상 디렉토리를 선택할 수 없습니다

webcam.jpg호출된 파일을 날짜로 인코딩된 하위 디렉터리로 복사하는 작업도 처리할 수 있는 짧은 쉘 스크립트를 작성하려고 합니다 . 디렉토리가 아직 존재하지 않으면 자동으로 디렉토리를 생성하기 때문에 rsync를 사용합니다.

다음을 사용하면 모든 것이 잘 작동합니다.

rsync -a webcam.jpg ./$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

그러나 디렉토리에 더 깊이 들어가면 rsync에서 오류가 발생하기 시작하는데 그 이유는 실제로 모르겠습니다. 나는 다음을 입력하고 있습니다 :

rsync -a webcam.jpg ./saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

내 결과는 다음과 같습니다

rsync: change_dir#3 "/var/www/tmp/test//./saved_images/2013-07-07" failed: No such file or directory (2)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(677) [Receiver=3.0.9]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(605) [sender=3.0.9]

test//./saved_images첫 번째 줄에 관련 오류가 표시되는데, 처음에 rsync가 이 디렉터리에 액세스하려고 시도하는 이유는 무엇입니까? 질문이 있으신가요 test/saved_images/?

답변1

좋고 /var/www/tmp/test//./saved_images/2013-07-07똑같습니다 /var/www/tmp/test/saved_images/2013-07-07.

Double은 /무시됩니다. 입력할 수 있으며 ls ////와 동일합니다 ls /.

요점은 .그것이 있는 디렉토리와 동일합니다. so는 디렉토리를 가리키는 것과 ls /.동일한 출력을 표시합니다 .ls //var/www/tmp/test/./var/www/tmp/test/

따라서 rsync귀하의 경우에는 해당 디렉토리가 있는 현재 디렉토리를 가져오십시오 var/www/tmp/test/(적어도 경로가 a로 시작하는 경우 .). 그런 다음 추가 항목을 추가하여 /해당 경로에 확실히 추가된 엔딩이 있는지 확인합니다 /. 마지막 단계에서는 여기에 제공한 부분을 추가합니다../saved_images/$(date +%Y-%m-%d)/$(date +%Y-%m-%d_%H-%M).jpg

표시되는 오류는 디렉터리가 /var/www/tmp/test/saved_images/존재하지 않으며 디렉터리 rsync만 생성하기 때문에 생성되지 않는다는 것입니다 .rsync

편집하다

어쩌면 문제 때문에 스크립트를 사용해야 할 수도 있습니다.

today_dir=$(date +%Y-%m-%d)
mkdir -p ./$today_dir/
cp webcam.jpg ./$today_dir/$(date +%Y-%m-%d_%H-%M).jpg

관련 정보