두 컴퓨터 간에 대규모 폴더 계층 구조를 동기화하고 싶습니다. 심볼릭 링크의 내용을 복사하고 싶습니다(절대적인 경우). 예를 들어 /some/folder/someFile
심볼릭 링크의 내용을 유지하고 싶습니다(상대적인 경우). 예를 들어 ../../somefolder
이를 수행하려면?
편집하다: 기본적으로 나는 재귀를 피하려고 노력합니다. 절대 링크를 복사하지만 링크를 유지하지 않고 내부 또는 상대 링크를 건너뛰는 --copy-unsafe-links 옵션을 사용해 보았습니다.
답변1
--copy-unsafe-links
rsync의 옵션을 사용하여 심볼릭 링크가 동기화된 폴더 공간 외부를 가리키는 파일 데이터를 복사할 수 있어야 하지만 지정된 파일도 동기화될 때만 심볼릭 링크를 보낼 수 있어야 한다고 생각합니다 . 이는 --links
( 에 포함된 ) -l
에 추가 되며 -a
복사된 계층 내에서 상대 심볼릭 링크를 심볼릭 링크로 복사하는 데 사용됩니다.
충분히 세부적이지 않은 경우 전송하고 싶지 않은 링크 목록을 생성하고 find
이를 포함/제외 목록 형식의 입력으로 전달해야 할 수도 있습니다.rsync
답변2
이 rsync 명령을 사용하십시오:
rsync -vrtil --copy-unsafe-links --log-file=(logfile) (source_dir) (dest_dir)
도착하다:
로컬 시스템과 관련된 기호 링크 유지
절대 링크(예: "/"로 시작)의 경우 기호 링크(예: "참조 개체")가 가리키는 파일/디렉토리가 대상에 복사됩니다.
#1의 예: 이 예에서는 소스 측에 2개의 파일, 즉 심볼릭 링크와 링크된 파일(예: "참조 개체", 즉 docs_home.htm)이 있습니다.
(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853 Jul 31 2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group) 13 May 31 2019 docs_home.html -> docs_home.htm
대상(즉, 대상) 측에서 위의 rsync 명령을 실행하면 다음을 얻게 됩니다.
(prompt): ls -al docs*
-rwxr-sr-x 1 (owner) (group) 8853 Jul 31 2019 docs_home.htm
lrwxrwxrwx 1 (owner) (group) 13 May 31 2019 docs_home.html -> docs_home.htm
#2의 예: 원본 측에는 다음과 같은 링크가 있습니다.
lrwxrwxrwx 1 (owner) (group) 59 Sep 14 2011 Document13.pdf -> /projects/proj_name/proj_subdir/Document13.pdf
대상("대상") 측에서 위의 rsync 명령을 실행한 후 "ls -al" 실행 결과의 다음 조각에 표시된 대로 파일 자체가 복사되었습니다.
-rwxrwxr-x 1 (owner) (group) 45874 Sep 14 2011 Document13.pdf