답변:
rsync
이 작업을 수행 하는 데 사용할 수 있습니다 .
$ rsync -abviuzP src/ dest/
-a
보관 모드; -rlptgoD와 같음 (아니오 -H, -A, -X)-i
기본 형식보다 더 많은 정보를 표시하는 항목 별 형식을 켭니다.-b
이전 파일에 ~를 추가하여 두 폴더 모두에 존재하는 rsync 백업 파일을 만듭니다. --suffix .suf를 사용하여이 접미사를 제어 할 수 있습니다.-u
rsync 전송이 src보다 dest의 최신 파일을 건너 뜁니다.-z
압축을 켭니다. 느린 링크를 통해 쉽게 압축 가능한 파일을 전송할 때 유용합니다-P
--partial 및 --progress를 켭니다.
--partial
전송이 중단 된 경우 rsync가 부분적으로 전송 된 파일을 유지하도록합니다.--progress
큰 파일을 전송할 때 유용한 각 전송의 진행률 표시 줄을 보여줍니다.이 스위치들 중 몇 개를 버렸지 만 이것은 시작하기위한 것입니다. 아마 다음과 같은 것을 사용할 것입니다 :
$ rsync -abuP src/ dest/
확인되면 다음 명령을 실행하여 백업 파일을 제거 할 수 있습니다.
$ find dest/ -name "*.~" -delete
다음 샘플 데이터가 있다고 가정 해 봅시다.
원본 데이터
다음 명령을 사용하여 가짜 데이터를 제조합니다.
$ seq 10 | xargs -I{} -- mkdir dest/dir{}
$ for i in $(seq 5); do echo "$i" > dest/dir$i/file$i;done
가짜 데이터는 다음과 같습니다.
$ tree -DsifvF --noreport dest/
dest
[ 4096 Aug 29 22:21] dest/dir1/
[ 2 Aug 29 22:21] dest/dir1/file1
[ 4096 Aug 29 22:21] dest/dir2/
[ 2 Aug 29 22:21] dest/dir2/file2
[ 4096 Aug 29 22:21] dest/dir3/
[ 2 Aug 29 22:21] dest/dir3/file3
[ 4096 Aug 29 22:21] dest/dir4/
[ 2 Aug 29 22:21] dest/dir4/file4
[ 4096 Aug 29 22:21] dest/dir5/
[ 2 Aug 29 22:21] dest/dir5/file5
새로운 데이터
이제 원본 데이터 ( dest/*
-> src/
)를 복제하고 새로운 파일 몇 개를 믹스에 추가합니다. 이것은 "새로운 릴리스"를 시뮬레이트합니다.
$ cp -pr dest/* src/
$ mkdir src/dir11
$ for i in 1 3 5 11; do echo "$i$i" > src/dir$i/file$i;done
가짜 데이터는 다음과 같습니다.
$ tree -DsifvF --noreport src/
src
[ 4096 Aug 29 22:21] src/dir1/
[ 3 Aug 29 23:00] src/dir1/file1
[ 4096 Aug 29 22:21] src/dir2/
[ 2 Aug 29 22:21] src/dir2/file2
[ 4096 Aug 29 22:21] src/dir3/
[ 3 Aug 29 23:00] src/dir3/file3
[ 4096 Aug 29 22:21] src/dir4/
[ 2 Aug 29 22:21] src/dir4/file4
[ 4096 Aug 29 22:21] src/dir5/
[ 3 Aug 29 23:00] src/dir5/file5
[ 4096 Aug 29 23:00] src/dir11/
[ 5 Aug 29 23:00] src/dir11/file11
src /를 dest /로 병합
이것은 우리가 새 소프트웨어 트리를 설정하고 src/
기존 디렉토리 인에 통합하려고 한다는 것을 모방합니다 dest/
.
$ rsync -abuP src/ dest/
sending incremental file list
dir1/file1
3 100% 0.00kB/s 0:00:00 (xfer#1, to-check=5/13)
dir11/
dir11/file11
5 100% 4.88kB/s 0:00:00 (xfer#2, to-check=4/13)
dir3/file3
3 100% 2.93kB/s 0:00:00 (xfer#3, to-check=2/13)
dir5/file5
3 100% 2.93kB/s 0:00:00 (xfer#4, to-check=0/13)
sent 416 bytes received 97 bytes 1026.00 bytes/sec
total size is 18 speedup is 0.04
보시다시피, file1, file3, file5 및 새로 추가 된 dir11 + file11 파일이 업데이트 된 것을 볼 수 있습니다.
그리고 확인에서 다음 파일이 rsync
에서 기존 파일을 발견했을 때 생성되었음을 알 수 있습니다 dest/
.
$ find dest/ | grep "~"
dest/dir3/file3~
dest/dir1/file1~
dest/dir5/file5~
별표 (*)는 모든 파일을 나타내고 -r은 재귀 복사를 나타냅니다. cp -r name_of_the_folder / * name_of_the_destination_folder를 사용할 수 있습니다.
-i 옵션을 사용하여 내용을 덮어 쓸 것인지 묻습니다.