한 디렉터리의 모든 파일과 폴더를 다른 디렉터리로 복사하고 싶습니다.아니요대상 디렉터리의 권한을 변경합니다.
소스 폴더는 555이고 대상 폴더는 775입니다. 아래 명령을 사용하면 대상 폴더가 555로 변경됩니다. 나는 이것을 원하지 않습니다.
cp -r /origin/. /destination
/origin의 내용을 복사하는 올바른 구문은 무엇입니까? 따라서 /destination은 여전히 775입니다.
나는 sudo가 없습니다.
답변1
사용 rsync
:
rsync -rlD /origin/ /destination/
중요한 부분은 /
끝에 있는 부분 origin/
으로 rsync에게 디렉토리 자체가 아닌 디렉토리의 내용을 복사하도록 지시합니다. 이 방법으로 /destination
최상위 디렉토리는 파일 추가를 제외하고는 복사 및 변경되지 않습니다.
스위치 설명:
-a, --archive archive mode; equals -rlptgoD (no -H,-A,-X)
-r, --recursive recurse into directories
-l, --links copy symlinks as symlinks
-p, --perms preserve permissions
-t, --times preserve modification times
-g, --group preserve group
-o, --owner preserve owner (super-user only)
-D same as --devices --specials
--devices preserve device files (super-user only)
--specials preserve special files
답변2
디렉터리 자체를 복사하지 말고 그 안에 있는 파일을 복사하세요.
cp -r /origin/* /destination
도트 파일(이름이 문자로 시작하는 파일)이 있는 경우 건너뛰기 .
때문에 복사되지 않습니다 . 포인트 파일을 복사하는 *
데 사용되며 , 이름이 시작하는 파일이 있는 경우 (자신 외에는 상위 디렉터리를 지정합니다).cp -r /origin/.[!.]* /destination
cp -r /origin/..?* /destination
..
..