mkdir을 던지는 rsync: '/data/dir_1/dir_2/dir_3/' 디렉터리를 만들 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

mkdir을 던지는 rsync: '/data/dir_1/dir_2/dir_3/' 디렉터리를 만들 수 없습니다. 해당 파일이나 디렉터리가 없습니다.

에 디스크를 마운트했습니다 /data. 현재는 비어 있습니다.

레벨 4에 있어야 하는 파일 보다 더 많은 rsync작업을 수행 해야 합니다. 즉 , , 및 이 존재하지 않는 경우입니다.mkdir -pmkdir/data/dir_1/dir_2/dir_3/filenamedir_1dir_2dir_3

필요한 하위 디렉터리를 수동으로 생성하면 다음 명령을 사용하여 rsync를 수행할 수 있습니다.

rsync -avz source_diretory/ /data/dir_1/dir_2/dir_3

그러나 하위 디렉터리를 생성하지 않으면 이 명령에서 오류가 발생합니다.

mkdir: cannot create directory ‘/data/dir_1/dir_2/dir_3/’: No such file or directory

rsync의 매뉴얼 페이지를 읽고 인터넷 검색을 시도했지만 사용해 보았지만 -r -R제대로 작동하지 못했습니다.

rsync다음과 같은 작업을 수행 할 수 있나요 mkdir -p? 아니면 해당 범위를 벗어나나요?

답변1

rsync명령은 디렉토리 트리를 생성하지 않으므로 다음을 수행하여 이를 수행할 수 있습니다.

 mkdir -p /data/dir_1/dir_2/dir_3

rsync명령 또는 사용 전--rsync-경로옵션:

--rsync-path=PROGRAM rsync를 시작하기 위해 원격 시스템에서 실행할 프로그램을 지정하려면 이를 사용합니다.

귀하의 명령은 다음과 같아야 합니다:

 rsync -avz source_diretory/ --rsync-path="mkdir -p /data/dir_1/dir_2/dir_3 && rsync" /data/dir_1/dir_2/dir_3

여기에 유용한링크.

답변2

Linux에서 rsync 대상 경로를 생성하는 더 짧은 방법은 '$_' 특수 변수를 사용하는 것입니다. (OSX에서도 마찬가지라고 생각하지만 확인할 수는 없습니다.)

'$_'는 실행된 이전 명령의 마지막 인수 값을 보유합니다. 따라서 질문에 다음과 같이 답할 수 있습니다.

mkdir -p /data/dir_1/dir_2/dir_3 && rsync -avz source_directory/ $_

관련 정보