web-dev-qa-db-ja.com

別のNTFSディスクにコピーし、ハードリンクを保持します

あるローカルNTFSディスクから別のローカルNTFSディスク(Windows 7以降)にディレクトリ構造をコピーし、このディレクトリ構造内に存在するハードリンクを保持する必要があります。

許容できる解決策は、コピーする前にハードリンクを(相対的な)シンボリックリンクに置き換えることですが、それが実行可能かどうかもわかりません。

ここでのオプションは何ですか?

10
Estus Flask

別々のディスクパーティション間でハードリンクをコピーするツール

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

注:CPUアーキテクチャ用のこのソフトウェアをZipファイルからダウンロードするだけでなく、vcredist(Visual C++再頒布可能パッケージ)をインストールします。次に、ファイルとフォルダをZipファイルから新しいフォルダに抽出します(例:C:\Temp)。コマンドラインで、その[ディレクトリ]フォルダーに移動し、上記の例に示すように、ドライブの場所に必要なコマンドを実行します。 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-コマンドラインハードリンク-スクリーンショットのダウンロードenter image description here

Link Shell Extension-Download Screen Shotenter image description here


興味深いメモ

hard linksは、ファイルポインタなどのために同じディスクパーティションにロックされており、複数のパーティションで使用できないようです。また、NTFSパーティションのhard linksMaster File Tableレコード(または少なくともカウントの属性)の一部であるため、これらを独自のMFTがある既存のディスクにコピーすると、少なくともパーティションレベルでバイト単位のクローンを作成しないと問題が発生します。

9
Pimp Juice IT

コマンドラインユーティリティrsyncはあなたが求めることをします。

古いデータがロケーションAにあり、新しいデータがBにあると想定して、以下を実行します。

rsync -ahPruvz --hard-links A B

Rsyncマニュアルからの引用:

これは、rsyncに、ソースでハードリンクされたファイルを探し、宛先で対応するファイルをリンクするように指示します。

rsyncを取得して使用するにはどうすればよいですか? Windowsには2つの簡単な選択肢があります。

最初の選択肢:cygwinを使用します。これはWindowsソフトウェアです。それをインストールし、パッケージを選択するステップでrsyncを追加します。他はすべてデフォルトのままにします。インストールしたら、シェルを使用してコマンドを入力します。必要に応じて、rsyncだけでなく、フルパス/usr/bin/rsyncを使用できます。 Windowsドライブにアクセスする場合は、「/ cygwin/drives」などのパスを使用し、常にTABを使用してオートコンプリートを試みてください。

2番目の選択肢:デスクトップコンピューターの場合は、ライブのGNU/Linuxディストリビューションを使用します。ライブUSBイメージを準備し、そこから起動し、目的のディスクをマウントして、rsyncを起動します。ライブイメージにrsyncがない場合は、インストールします。 (Debianおよびその派生物ではapt-get install rsync。)Linuxエコシステムの経験がまだない場合は、cygwinの方が簡単かもしれません。

4
VasyaNovikov

Windowsのrsyncを調べてみてください。 rsyncにはハードリンクを保持するオプションがあるため(フラグ-H、-hard-links)、ジョブを実行する必要があります(ソース: https://download.samba.org/pub/rsync/rsync.html =)。

CwRsyncのようなものを調べてみることができます: https://www.itefix.net/cwrsync# これにはGUIがあります。

cwRsyncは、RGUI for WindowsとクライアントGUIのパッケージです。 cwRsyncを使用して、リモートファイルのバックアップと同期を高速化できます。

ここのパーティーにはとても遅れました。

火で火と戦う。 robocopyは混乱を許したので、robocopyを使用してクリーンアップします。

空のディレクトリを作成し、robocopyを使用して、purgeオプションを使用して空のディレクトリをターゲット(非常に長いパスを持つ)にコピーします。

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

うまくいくはずです。

1
Robert Ricketts