그래서 대안으로링크를 따르거나 거대한 tar 파일을 생성하지 않고 재귀 scp를 사용하시나요?(원격 파일이 곧 삭제될 수 있으므로 긴급 상황일 수 있습니다.) 심볼릭 링크를 모두 삭제하는 것을 고려 중입니다. 하지만 scp 파일 복사를 마친 후 복원할 수 있도록 모든 항목을 어딘가에 일괄 내보내고 싶습니다.
답변1
심볼릭 링크만 포함된 tar 아카이브를 만들 수 있습니다. GNU 유틸리티(내장되지 않은 Linux 또는 Cygwin)를 가정합니다.
cd /some/dir
tar cf symlinks.tar --no-recursion .
find -type l -print0 | xargs -0 tar rf symlinks.tar
또 다른 접근 방식은 쉘 스크립트를 생성하여 심볼릭 링크를 다시 만드는 것입니다. 이는 Perl 접근 방식입니다(이 방법은 POSIX 유틸리티에서만 작동하지만 특수 문자를 올바르게 처리하기 어렵습니다).
use File::Find;
sub wanted {
if (-L $_) {
$link_name = $_;
$target = readlink($_);
die $! if !defined $target;
# protect single quotes from shell expansion
$link_name =~ s/\x27/\x27\\\x27\x27/;
$target =~ s/\x27/\x27\\\x27\x27/;
print "ln -s -- \x27$target\x27 \x27$link_name\x27\n";
}
}
find({wanted => \&wanted, no_chdir => 1}, ".")
심볼릭 링크를 삭제하지 마세요. 복사본에서 제외하거나 아래와 같이 디렉터리 트리의 심볼릭 링크되지 않은 복사본을 만듭니다.다른 질문에 대한 내 대답.