다른 NTFS 디스크에 복사하고 하드 링크 유지


10

하나의 로컬 NTFS 디스크에서 다른 로컬 NTFS 디스크 (Windows 7 이상)로 디렉토리 구조를 복사하고이 디렉토리 구조 내에 존재하는 하드 링크를 보존해야합니다.

복사하기 전에 하드 링크를 (상대) 심볼릭 링크로 바꾸는 것이 허용되지만 해결책도 확실하지 않습니다.

옵션은 무엇입니까?


superuser.com/questions/624811/… 에 따르면 "Shadow Copy Cloner"라는 소프트웨어가 그렇게 할 수 있습니다.
Vojtech

1
@Vojtech 프리웨어가 아니며 사용할 수없는 것 같습니다. 그러나 ln.exe는 저의 요구에 맞습니다. 그러나 GUI와 다른 대안을 선호합니다.
Estus Flask

1
@PJMahoney 예, 하드 링크입니다. 접합 및 기호 복사에 문제가 없으며 후자는 나중에 복사하여 수정할 수 있습니다. 디렉토리 구조 (전체 디스크의 일부)를 비어 있지 않은 다른 디스크로 복사하기 만하면 복제하지 않습니다.
Estus Flask

답변:


9

별도의 디스크 파티션에서 하드 링크를 복사하는 도구

LN-명령 행 하드 링크

명령: ln --copy x:\dir\dir2 y:\dir\newdir

위의 예에서 x : \ dir \ dir2 아래의 디렉토리와 파일은 y : \ dir \ newdir에 복사되고 x : \ dir \ dir2 내의 모든 하드 링크 / 접합 / 기호 링크는 y의 새 위치에 복사 / 연결됩니다 : \ dir \ newdir.

자원 : http://schinagl.priv.at/nt/ln/ln.html

다운로드 : http://schinagl.priv.at/nt/ln/ln.html#contact

참고 : ZIP 파일과 vcredist (Visual C ++ 재배포 가능 파일)에서 CPU 아키텍처 용 소프트웨어를 다운로드하여 설치하는 것 같습니다. 그런 다음 ZIP 파일에서 새 폴더로 파일과 폴더를 추출하십시오 (예 :) C:\Temp. 명령 행에서 해당 [directory] 폴더로 이동 한 다음 위의 예와 같이 드라이브 위치에 필요한 명령을 실행하십시오. Running ln --help은 도움말 세부 정보를 표시하지만 위의 명령 예제는 hard links설명서별로 복사해야합니다 .


링크 쉘 확장

자원 : http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

다운로드 : http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html#contact

이 소프트웨어의 섹션 또는 관심 기능

  • Smart Mirror
  • Clone
  • Smart Copy

ln-커맨드 라인 하드 링크-스크린 샷 다운로드 여기에 이미지 설명을 입력하십시오

링크 쉘 확장-스크린 샷 다운로드 여기에 이미지 설명을 입력하십시오


흥미로운 메모

표시 hard links등 자신의 파일 포인터, 동일한 디스크 파티션에 잠겨있는 여러 파티션에서 사용할 수 없습니다. 또한 hard linksNTFS 파티션에서 Master File Table레코드의 일부 (또는 최소한 수의 속성) MFT는 파티션 수준에서 바이트 단위로 복제하지 않으면 자체 디스크가있는 기존 디스크에 복사 하는 것이 문제처럼 보일 수 있습니다. 적어도.


4

명령 줄 유틸리티 rsync는 요청한 내용을 수행합니다.

이전 데이터가 위치 A에 있고 새 데이터가 B에 있다고 가정하면 다음을 수행하십시오.

rsync -ahPruvz --hard-links A B

rsync 매뉴얼에서 인용 :

이것은 rsync에게 소스에서 하드 링크 된 파일을 찾고 대상에서 해당 파일을 함께 링크하도록 지시합니다.

rsync그것을 얻고 사용하는 방법? Windows에 대한 두 가지 쉬운 대안이 있습니다.

첫 번째 대안 : use cygwin. Windows 소프트웨어입니다. rsync패키지를 선택하는 단계에서 설치하십시오 . 다른 모든 것을 기본값으로 두십시오. 설치 한 후 쉘을 사용하여 명령을 입력하십시오. 원하는 경우 /usr/bin/rsync그냥 대신 전체 경로를 사용할 수 있습니다 rsync. Windows 드라이브에 액세스하려면 "/ cygwin / drives"와 같은 경로를 사용하고 항상 TAB을 사용하여 자동 완성을 시도하십시오.

두 번째 대안 : 데스크탑 컴퓨터 인 경우 라이브 GNU / Linux 배포판을 사용하십시오. 라이브 USB 이미지를 준비하고 부팅하여 원하는 디스크를 마운트 한 다음 rsync를 호출하십시오. 라이브 이미지에이 없으면 rsync설치하십시오. ( apt-get install rsync데비안과 그 파생어에서) 리눅스 환경에 아직 경험이 없다면 cygwin이 더 쉬울 수있다.


이것을 명확히 해 주셔서 감사합니다. rsync를 확인했으며 실제로 하드 링크에서 작업을 수행합니다 (/ cygwin / driveletter 및 슬래시로 인해 약간의 불편 함이 발생하지만 작동합니다).
Estus Flask

참고 : A디렉토리 인 경우 B디렉토리가 대상에서 사용할 이름이어야합니다 ( cp예 : 마지막 인수가 상위 디렉토리 인 경우 와 달리 )
MM

@estus-어떤 방법을 시도했지만 어떻게 작동 했습니까? 결과는 무엇을보고 가장 좋아했습니까?
Alex S

@ AlexS 나는 기억하지 않지만 ln다른 대답에 표시된 것처럼 끝날 것입니다 . rsync내가 언급 했듯이이 답변의 Cygwin도 효과 가있을 수 있습니다.
Estus Flask

1
@AlexS CLI 유틸리티를 사용했습니다 ln --copy. GUI는 '스마트 카피'가 원하는 것으로 가정합니다.
Estus Flask

3

Windows의 rsync를 살펴보십시오. rsync에는 하드 링크 (flag -H, --hard-links)를 유지하는 옵션이 있으므로 작업을 수행해야합니다 (소스 : https://download.samba.org/pub/rsync/rsync.html ).

cwRsync : https://www.itefix.net/cwrsync# 와 같은 것을 살펴볼 수 있습니다. 이것은 GUI가 있습니다.

cwRsync는 클라이언트 GUI가 포함 된 Windows 용 Rsync 패키지입니다. 빠른 원격 파일 백업 및 동기화를 위해 cwRsync를 사용할 수 있습니다.


1
소프트웨어를 추천 할 때는주의하십시오. 서면으로 답변이 스팸으로 표시 될 수 있습니다. 귀하의 답변에는 소프트웨어에 대한 설명과 문제 해결 방법이 포함되어야합니다. 추가 정보 : 답변에 소프트웨어를 추천하는 방법은 무엇입니까?
bwDraco

1
이전에 rsync 로이 작업을 수행 할 수 없었습니다 (GUI에 DeltaCopy를 사용했다고 생각합니다). NTFS 하드 링크 구현 및 rsync가 주로 * nix 도구라는 사실과 관련이있을 수 있습니다. 약간의 설명이 필요합니다.
Estus Flask

1

파티에 늦었 어.

불로 불을 끄십시오. robocopy는 혼란을 허용했기 때문에 robocopy를 사용하여 정리할 것입니다.

빈 디렉토리를 작성한 다음 robocopy를 사용하여 purge 옵션을 사용하여 빈 디렉토리를 대상 (매우 긴 경로가있는)에 복사하십시오.

md %temp%\foo
robocopy %temp%\foo target /purge
rd target
rd %temp%\foo

작동합니다.

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