현재 저는 디렉토리의 빠른 백업을 생성하기 위해 이 두 명령을 실행하고 있습니다. 이 두 명령을 하나로 결합하여 하나의 명령으로 새 디렉터리를 복사하고 이름을 바꿀 수 있는 방법이 있습니까?
#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
답변1
당신은 할 수 있어야합니다
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
하지만, 대상 디렉토리가 이미 존재하는 경우 소스 경로의 마지막 부분을 대상 경로에 추가하고 생성한
/tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App
다음 트리의 나머지 부분을 복사합니다.
이를 방지하려면 /tf/Custom_App/.
소스로 사용하세요. 물론, 이 경우 rm -r /tf/Custom_App_backups/Custom_App_2017-12-21
복사 후 기존 파일이 그대로 남아 있는 것을 원하지 않는다면 이 작업을 먼저 수행하는 것이 좋습니다.
/some/dir
와 의 차이점은 /some/dir/.
얼마 전에 논의되었습니다.그 당시 CP는 매우 이상하게 행동했습니다. (점) 또는 .. (점)은 소스 디렉터리입니다.
답변2
또는 다음을 수행할 수 있습니다.
mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents
이를 통해 사용자 정의 위치를 미리 지정할 수 있습니다. 또한 접미사 " /.
this"를 사용하여 콘텐츠만 복사하고 콘텐츠에 포함된 폴더(이 경우 폴더)는 제외할 수 있습니다 Custom_app
.
답변3
나는 동일한 조언을 찾기 위해 우연히 이 페이지를 발견했습니다. 내 Ubuntu 20.04(Focal Fossa) 시스템에서 이 명령을 시도하고 @ilkkachu에서 제공한 것과 동일한 구문을 사용했습니다. dest/처럼 dest 폴더에 후행 슬래시를 추가했다는 점만 빼면요. 결과적으로 소스 폴더와 그 형제 폴더가 복사됩니다! 후행 슬래시 없이 다시 시도하면 원하는 결과를 얻습니다.
따라서 나중에 참조할 수 있도록 dest 폴더에 후행 슬래시를 추가하면 소스 형제 파일도 복사된다는 점에 유의하세요(.. 적어도 내 경험에서는 그랬습니다).
답변4
대상 디렉터리를 생성하여 쉽게 계속할 수 있습니다.
mkdir Custom_App_2017-12-21
cd Custom_App_2017-12-21/
cp -R /tf/Custom_App/* .
마지막 명령은 모든 관련 파일을 새로 생성된 디렉터리에 복사합니다.