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