태그 보관물: symbolic-link

symbolic-link

rsync 및 기호 링크 가득 찬 디렉토리에 대한

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똑똑하지 않다고 가정 하고 상대 디렉토리 변경 사항에 대한 심볼릭 링크의 내용을 수정하려고 시도하지 않습니다. 이 올바른지? 백업 디렉토리에서 링크가 끊어 지더라도 복구해야 할 때 수정되고 작동하는 한 문제가되지 않습니다.


답변

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

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

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

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

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

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

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

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

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


답변

@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


답변