%EB%A5%BC%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%B2%98%EB%A6%AC%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
Robocopy 백업을 삭제해도 안전합니까? 일부 사람들은 링크/접합이 포함되어 있기 때문에 백업 외부의 파일을 실수로 삭제했다는 내용을 읽었습니다. 이것을 방지할 수 있나요?
답변1
그만큼로보카피 문서파일 시스템 링크와 관련된 Robocopy의 동작을 제어하는 옵션을 나열합니다.
/sl 심볼릭 링크를 따르지 말고 대신 링크의 복사본을 만듭니다.
/xj 일반적으로 기본적으로 포함되는 연결 지점을 제외합니다.
/xjd 디렉터리의 연결 지점을 제외합니다.
/xjf 파일의 연결 지점을 제외합니다.
Robocopy가 이러한 옵션을 사용하거나 사용하지 않고 어떻게 작동하는지 알아보기 위해 배치 스크립트를 만들었습니다. 그것은 사용한다mlink
. 를 사용하면 mlink
다음을 만들 수 있습니다.
- 파일 및 디렉터리에 대한 기호 링크.
- 파일에 대한 하드 링크. 디렉터리에 대한 하드 링크를 만들려고 하면 오류가 발생합니다.
- 디렉토리에 대한 링크인 접합. 파일에 대한 연결을 만들려고 하면 성공하지만 연결이 끊어집니다.
기호 링크는 대상 매개변수를 전달하는 방법에 따라 상대적이거나 절대적일 수 있습니다. 하드 링크와 교차점은 상대 목표를 통과하더라도 항상 절대적입니다.
@echo off
set home=C:\my-directory
cd %home%
mkdir robocopy-source
cd robocopy-source
mkdir a
mkdir b
copy NUL b\foo.txt
cd a
mklink /j junction-dir-absolute %home%\robocopy-source\b\
mklink /d symlink-dir-absolute %home%\robocopy-source\b\
mklink /d symlink-dir-relative ..\b\
mklink /h hardlink-file-absolute %home%\robocopy-source\b\foo.txt
mklink symlink-file-absolute %home%\robocopy-source\b\foo.txt
mklink symlink-file-relative ..\b\foo.txt
cd %home%
robocopy robocopy-source robocopy-target /mir /dcopy:dat
robocopy robocopy-source robocopy-target-sl /mir /dcopy:dat /sl
robocopy robocopy-source robocopy-target-xj /mir /dcopy:dat /xj
robocopy robocopy-source robocopy-target-xjd /mir /dcopy:dat /xjd
robocopy robocopy-source robocopy-target-xjf /mir /dcopy:dat /xjf
사용하여링크 셸 확장, 이제 무슨 일이 일어났는지 확인할 수 있습니다.
길 | 정보 |
---|---|
robocopy-source\a\junction-dir-absolute | %home%\robocopy-source\b\에 대한 링크 |
robocopy-source\a\symlink-dir-absolute | %home%\robocopy-source\b\에 대한 링크 |
robocopy-source\a\symlink-dir-relative | ..\b\에 대한 링크 |
robocopy-소스\a\hardlink-파일-절대 | %home%\robocopy-source\b\foo.txt(및 자체)에 대한 링크 |
robocopy-소스\a\symlink-파일-절대 | C:\Users\Marco\Desktop\Linktest\robocopy-source\b\foo.txt에 대한 링크 |
robocopy-source\a\symlink-파일-상대 | ..\b\foo.txt에 대한 링크 |
robocopy-대상\a\junction-dir-절대 | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-target\a\symlink-dir-absolute | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-target\a\symlink-dir-relative | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-대상\a\hardlink-파일-절대 | 빈 파일 |
robocopy-대상\a\symlink-파일-절대 | 빈 파일 |
robocopy-target\a\symlink-파일 상대 | 빈 파일 |
robocopy-대상-sl\a\junction-dir-absolute | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-대상-sl\a\symlink-dir-절대 | %home%\robocopy-source\b\에 대한 링크 |
robocopy-대상-sl\a\symlink-dir-relative | ..\b\에 링크 |
robocopy-대상-sl\a\hardlink-파일-절대 | 빈 파일 |
robocopy-대상-sl\a\symlink-파일-절대 | %home%\robocopy-source\b\foo.txt에 대한 링크 |
robocopy-대상-sl\a\symlink-파일-상대 | ..\b\foo.txt에 대한 링크 |
robocopy-대상-xj\a\junction-dir-absolute | 존재하지 않는다 |
robocopy-대상-xj\a\symlink-dir-절대 | 존재하지 않는다 |
robocopy-target-xj\a\symlink-dir-relative | 존재하지 않는다 |
robocopy-대상-xj\a\hardlink-파일-절대 | 빈 파일 |
robocopy-대상-xj\a\symlink-파일-절대 | 존재하지 않는다 |
robocopy-target-xj\a\symlink-파일-상대 | 존재하지 않는다 |
robocopy-대상-xjd\a\junction-dir-absolute | 존재하지 않는다 |
robocopy-대상-xjd\a\symlink-dir-절대 | 존재하지 않는다 |
robocopy-target-xjd\a\symlink-dir-relative | 존재하지 않는다 |
robocopy-대상-xjd\a\hardlink-파일-절대 | 빈 파일 |
robocopy-대상-xjd\a\symlink-파일-절대 | 빈 파일 |
robocopy-target-xjd\a\symlink-파일-상대 | 빈 파일 |
robocopy-target-xjf\a\junction-dir-absolute | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-target-xjf\a\symlink-dir-absolute | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-target-xjf\a\symlink-dir-relative | %home%\robocopy-source\b\의 복사된 콘텐츠가 있는 디렉터리 |
robocopy-대상-xjf\a\hardlink-파일-절대 | 빈 파일 |
robocopy-대상-xjf\a\symlink-파일-절대 | 존재하지 않는다 |
robocopy-target-xjf\a\symlink-파일-상대 | 존재하지 않는다 |
이 옵션을 사용하지 않은 이상 /sl
Robocopy로 생성된 백업을 삭제하는 것이 안전할 것이라고 결론을 내렸습니다. 그러나 이 옵션을 사용한 경우 /sl
절대 기호 링크로 인해 문제가 발생할 수 있습니다.del
명령 을 사용할 때.
추가 관찰:
- 하드 링크는 항상 빈 파일을 생성합니다.
- 옵션은
/xjd
디렉토리에 대한 링크를 건너뜁니다. 문서에서 암시하는 것 외에 접합점뿐만 아니라 기호 링크도 건너뜁니다! - 옵션은
/xjf
파일 링크를 건너뜁니다. 문서에서 암시하는 것 외에는 파일에 대한 접합을 건너뛰지 않습니다(어쨌든 존재하지 않는 것), 그러나 심볼릭 링크! - 옵션은 및 를
/xj
결합합니다 ./xjd
/xjf
나는 다음을 신고했다.문서에 문제가 있다.
바로가기(.lnk 파일)에 관한 보너스 정보
바로가기는 Robocopy에서 일반 파일처럼 처리됩니다.~ 할 것이다일반적으로 백업 디렉터리 외부를 가리킵니다. 그러나 일반적으로 다른 명령줄 프로그램에서도 일반 파일처럼 처리됩니다. 명령 프롬프트와 del /s /q
MINGW64 셸에서 이것을 확인했는데 모두 바로 가기를 따르지 않으므로 의도하지 않은 삭제가 발생하지 않습니다.rmdir /s /q
rm -rf