답변:
다음 명령 으로이 작업을 수행 할 수 있습니다
# rsync --recursive the_file /path/to/your/dir/that/doesn't/exists/
참고 : 경로 끝에서 "/"사용 :
소스 끝에서 "/"를 사용하면 rsync는 마지막 폴더의 내용을 복사합니다. 소스 끝에서 "/"를 사용하지 않으면 rsync는 마지막 폴더와 폴더의 내용을 복사합니다.
대상 끝에서 "/"를 사용하면 rsync가 마지막 폴더 안에 데이터를 붙여 넣습니다. 대상 끝에서 "/"를 사용하지 않으면 rsync는 마지막 대상 폴더 이름으로 폴더를 만들고 해당 폴더 안에 데이터를 붙여 넣습니다.
desgua의 대답 은 적절하고 간단한 방법이지만, 가능한 방법이 필요하다면 어떻게해야합니까? POSIX 는 플래그 cp
없이 정의 --parent
하므로 모든 시스템에서 작동하지는 않습니다.
하나의 옵션은 시스템에 설치된 경우 Python으로 작성하는 것입니다.
#!/usr/bin/env python3
from os import makedirs
from os.path import exists,basename
from shutil import copyfile
from sys import argv
if len(argv) < 3:
print('Not enough args',file=stderr)
exit(1)
filename = basename(argv[2])
dirs = argv[2].replace(filename,'')
makedirs(dirs)
copyfile(argv[1],argv[2])
이것은 다음과 같이 작동합니다.
$ ./mkdircp.py /etc/passwd $HOME/foodir/bardir/passwd.copy
$ stat --printf "%F\n" $HOME/foodir/bardir/passwd.copy
regular file
$ head -n 1 $HOME/foodir/bardir/passwd.copy
root:x:0:0:root:/root:/bin/bash
the_file
를 추가해야/
합니다.