심볼릭 링크를 생성하여 rsync를 사용하여 폴더를 다른 폴더로 "복제"할 수 있습니까?

심볼릭 링크를 생성하여 rsync를 사용하여 폴더를 다른 폴더로 "복제"할 수 있습니까?

rsync를 사용하여 폴더를 새 폴더로 "복제"하지만 소스에 대한 심볼릭 링크로 새 폴더 트리 구조를 만드는 것이 가능합니까?

cp -as SOURCE DEST

-s, --symbolic-link 복사 대신 심볼릭 링크 생성

위 명령어로 문제가 해결되었으나 다시 cp 명령어를 실행해도 DEST에 수동으로 추가한 파일은 삭제되지 않습니다. 그래서 rsync를 사용하려고 생각했습니다.

이를 달성하는 방법에 대한 제안이 있으십니까?

답변1

rsync심볼릭 링크는 생성되지 않지만 하드 링크는 생성될 수 있습니다.

$ ls -lR test-source
total 4
-rw-r--r--  1 kk  wheel    0 Oct 22 18:54 a
-rw-r--r--  1 kk  wheel    0 Oct 22 18:54 b
-rw-r--r--  1 kk  wheel    0 Oct 22 18:54 c
-rw-r--r--  1 kk  wheel    0 Oct 22 18:54 d
drwxr-xr-x  2 kk  wheel  512 Oct 22 18:54 dir

test-source/dir:
total 0
-rw-r--r--  1 kk  wheel  0 Oct 22 18:54 e
-rw-r--r--  1 kk  wheel  0 Oct 22 18:54 f
-rw-r--r--  1 kk  wheel  0 Oct 22 18:54 g
-rw-r--r--  1 kk  wheel  0 Oct 22 18:54 h

--link-dest플래그 사용 :

$ rsync -av --link-dest="$PWD/test-source" test-source/ test-destination/
sending incremental file list
created directory test-destination

sent 191 bytes  received 52 bytes  486.00 bytes/sec
total size is 0  speedup is 0.00

이제 대상 파일이 소스 디렉터리에 하드 링크되었습니다( 2출력의 두 번째 열 참조 ls -l).

$ ls -lR test-destination
total 4
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 a
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 b
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 c
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 d
drwxr-xr-x  2 kk  wheel  512 Oct 22 18:54 dir

test-destination/dir:
total 0
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 e
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 f
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 g
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 h

소스 디렉터리의 파일 링크 수도 증가합니다(분명히).

$ ls -lR test-source
total 4
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 a
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 b
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 c
-rw-r--r--  2 kk  wheel    0 Oct 22 18:54 d
drwxr-xr-x  2 kk  wheel  512 Oct 22 18:54 dir

test-source/dir:
total 0
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 e
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 f
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 g
-rw-r--r--  2 kk  wheel  0 Oct 22 18:54 h

소스 디렉토리에 존재하지 않는 파일을 대상 디렉토리에서 삭제하려면 다음 플래그를 사용하십시오 --delete.

$ touch test-destination/delete_me

$ rsync -av --delete --link-dest="$PWD/test-source" test-source/ test-destination/
sending incremental file list
deleting delete_me
./

sent 194 bytes  received 29 bytes  446.00 bytes/sec
total size is 0  speedup is 0.00

관련 정보