rsync 및 기호 링크


69

cron작업을 사용하여 야간에 홈 디렉토리를 외장 드라이브에 백업하고 싶습니다 rsync. rsync의 심볼릭 링크 플래그 가 정확한지 확실하지 않습니다 .

  1. rsync-a플래그에는 플래그가 포함됩니다 -l(즉, "symlinks를 symlinks로 복사"). 이것은 링크복사하거나 링크 를 따라 링크 대상 디렉토리의 모든 것을 복사 한다는 의미 입니까? 수백 기가 바이트의 복사가 필요한 미디어 파일로 가득 찬 디렉토리에 대한 링크가 있으므로 백업 할 필요가 없습니다.
  2. rsync -a모든 미디어 파일을 복사 하는 두려움 (그러나 확실하지는 않음) 대신 --no-links플래그 를 추가했습니다 . 이것은 내가 원하는 행동이 아닌 것 같습니다. 복사하려는 링크 (예 : 다른 프로젝트 디렉토리의 공통 헤더 파일에 대한 링크)가 있기 때문에 문제가되는 링크 복사는 무시합니다.
  3. 위의 # 1 ( --no-links플래그 없이 )이 실제로 원하는 것으로 가정하고 링크 된 파일을 복사하지 않고 링크를 복사하면 백업 할 때 링크가 끊어 집니까? 예를 들어 rsync디렉토리 /home/me/projects/misc를에 소스 할 수 있습니다 /media/extdrive/backup/home/me/projects/misc. 이 경우 나는 rsync똑똑하지 않다고 가정 하고 상대 디렉토리 변경 사항에 대한 심볼릭 링크의 내용을 수정하려고 시도하지 않습니다. 이 올바른지? 백업 디렉토리에서 링크가 끊어 지더라도 복구해야 할 때 수정되고 작동하는 한 문제가되지 않습니다.

3
-L 플래그는 아마도 당신이 원하는 것입니다. Centos Linux의 rsync 매뉴얼 페이지에서 : "-L, --copy-links는 심볼릭 링크를 참조 파일 / dir로 변환합니다." 원하지 않는 데이터를 덮어 쓰지 않도록 샘플 디렉토리와 링크로 이것을 테스트하는 것이 좋습니다. 가능한 데이터 손실에 대한 경고를 포함하도록 편집되었습니다. ;)
Mick T

답변:


89
  1. "심볼릭 링크로 심볼릭 링크 복사"란 정확히 의미합니다. rsync가 소스 디렉토리에서 심볼릭 링크를 볼 경우 대상에서 동일한 심볼릭 링크를 만듭니다. 더 이상 없습니다.

    (설명서 페이지의 몇 줄 아래에 다른 옵션 --copy-links은 원하지 않는 것으로 묘사 된 반대 동작 (항상 데이터 복사)을 설명합니다.)

    "기호 링크"섹션도 참조하십시오.

    --links지정 하면 대상에서 동일한 대상으로 심볼릭 링크가 다시 작성됩니다.

  2. 무엇을 잘못 해석 --links하고 잘못된 행동을 요구하기 때문에 원하는 행동이 아닙니다 (답변 # 1 참조).

  3. 기본적으로 대상을 정확하게 복사합니다 .

    즉, 링크가 절대 경로를 가리키는 경우 (예 /home/me/projects:) 계속 동일한 경로를 가리 킵니다. 그것은 중단 되지 않으며 백업의 파일이 아닌 홈 디렉토리의 파일을 계속 가리 킵니다.

    링크가 상대 경로 (예를 들어 지적 경우 한편, ../../projects), 그것은 것 또한 동일한 경로를 가리키는 계속하지만 심볼릭 링크의 위치에 상대적이기 때문에, 백업에서 심볼릭 링크는 백업에서 파일을 가리키는 것입니다.

    불행히도 새로운 기반에 대한 절대 심볼릭 링크를 변환하는 옵션이없는 것 같습니다 (전체를 깰 수있는 옵션 만). 문제를 피하려면 기존 심볼릭 링크를 상대 심볼릭으로 변경해야합니다 (일반적으로 $ HOME 내부의 링크에 좋습니다).


2
--copy-links과 의 차이점은 무엇 --links입니까?
Alexander Mills

--copy-links= -L, 및 --links= -l. 내 답변의 문서에서 설명을 참조하십시오 : superuser.com/a/1388910/425838
Gabriel Staples

12

@grawity는 훌륭한 답변을 제공하지만 다음은 설명서의 관련 정보 스크린 샷입니다. 예를 들어 -l-L옵션에 대한 정확한 표현은 다음 과 같습니다. 이는 가장 관련성이 높은 것으로 보입니다.

여기에 이미지 설명을 입력하십시오

출처 : https://linux.die.net/man/1/rsync 또는 man rsyncLinux의 수동 페이지.

또한 -a( --archive) 옵션에는 옵션이 포함되어 있습니다.이 -l옵션 -l은 소스의 심볼릭 링크를 대상의 심볼릭 링크로 유지 하는 옵션을 사용하기를 좋아하기 때문에 훌륭 합니다. 매뉴얼 페이지에서 :

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)

rsync복사, 미러링, 전체 진행률 표시 등 내가 가장 좋아하는 명령 및 지침은 다음과 같습니다.

... 건조 실행, stderr 및 stdout을 (별도의) 파일에 로깅, 포함 경로 파일제외 파일 등을 사용하여 통계를 표시하는 방법 여기에서 " 2. 도구 (Linux, Cygwin이 설치된 Windows) ": https://superuser.com/a/1464264/425838

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.