이 질문을 하게 된 동기는 다음과 같습니다. 심볼릭 링크를 만드는 목적 중 하나는 공간을 절약하는 것이지만 디렉터리를 다른 위치로 이동하는 간단한 mv 명령은 모든 것을 대상 위치로 이동하여 심볼릭 링크를 완전한 파일로 처리합니다. 파일을 백업하면 매우 크지만 불필요한 공간을 차지할 수 있습니다. 내 질문은 실제 파일만 이동하고 심볼릭 링크는 그대로 유지하는 방법이 있습니까?
답변1
당신이 사용할 수있는rsync
rsync -l original_file backup_file
~에서man rsync
-l, --links 심볼릭 링크를 심볼릭 링크로 복사
즉, 링크가 가리키는 콘텐츠가 아닌 링크만 복사하면 됩니다. 이것은 이동이 아니라 복사본이라는 점에 유의하세요. 하지만 백업한다는 것이 바로 그런 뜻이라고 생각합니다.
답변2
쉘 테스트 연산자를 사용하여 -L
파일이 심볼릭 링크인지 테스트할 수 있습니다. 파일 이동과 같은 것을 사용하는 경우 mv *.txt elsewhere/
루프를 사용하여 심볼릭 링크를 건너뛸 수 있습니다.
for x in *.txt; do
if ! [ -L "$x" ]; then mv -- "$x" elsewhere/; fi
done
또는 find
해당 유형에 따라 파일 작업을 호출할 수 있습니다. 이는 디렉토리를 재귀적으로 탐색할 때 유용합니다. 디렉토리를 에 전달하면 mv
전체 디렉토리가 이동되며 이는 하위의 모든 파일에 간접적으로 영향을 미칩니다.
이것이 백업의 "거대하지만 불필요한 공간"과 어떤 관련이 있는지 이해하지 못합니다.이 스레드는 실제 질문과 관련이 없을 수 있습니다..
답변3
만드는 대신심볼릭 링크당신(당신)은 할 수 있어요하드 링크따라서 원본 파일을 다른 위치로 이동하거나 삭제하더라도 하드링크는 계속 작동됩니다. 하지만 몇 가지가 있습니다한정예를 들어 파일로 제한되므로 디렉터리를 가리킬 수 없습니다. 둘째, 동일한 파일 시스템에 포함된 파일 간에만 링크를 만들 수 있습니다.
어쨌든, 사용하기로 선택했다면심볼릭 링크소스 파일을 이동한 후 링크의 전체 경로는 다른 파일 이름에 대한 포인터일 뿐이므로 다시 제공해야 합니다.