제가 원하는 것은 파일(및 하위 폴더)이 특정 폴더에 추가될 때 이동하는 것이지만 소스와 대상에서는 원래 폴더 구조를 유지하고 싶습니다. 나는 이것이 예를 들어 쉽게 설명될 수 있다고 믿는다. 다음 폴더/파일 구조를 상상해 보세요.
/source/foo/bar1
/source/bar2
/dest
다음 폴더/파일 구조를 보관하고 싶습니다.
/source/foo
/dest/foo/bar1
/dest/bar2
이 작업을 자동으로 수행하는 방법이 있나요? 귀하의 답변에 미리 감사드립니다.
답변1
rsync
모든 것을 복사한 다음 소스에서 디렉터리를 제외한 모든 것을 삭제하는 데 사용됩니다 . 예를 들어 다음( source
파일이 포함된 디렉터리 및 bar2
파일이 포함된 하위 디렉터리)으로 시작합니다.foo
source/foo/bar2
$ tree source/
source/
├── bar2
└── foo
└── bar1
1 directory, 2 files
다음을 실행합니다.
rsync -r source/ dest/
이로 인해 다음이 생성됩니다.
$ tree dest/
dest/
├── bar2
└── foo
└── bar1
1 directory, 2 files
이제 디렉토리가 아닌 모든 항목을 삭제하십시오 source
.
find source/ -not -type d -delete
또는 find
없는 경우 다음을 -delete
사용하세요.
find source/ ! -type d -exec rm {} +
자동화하려면 다음과 같은 작은 스크립트를 작성하면 됩니다.
#!/bin/sh
source="$1"
dest="$2"
rsync -r "$source"/ "$dest"/
find "$source"/ -not -type d -delete
스크립트를 실행 가능하게 만들고 소스 및 대상 디렉터리를 인수로 사용하여 실행합니다.
foo.sh /source /dest