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


10

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

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

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


superuser.com/questions/624811/…によれば、ソフトウェア「Shadow Copy Cloner」はそれを行うことができます。
Vojtech 2015年

1
@Vojtechこれはフリーウェアではなく、利用できないようです。ただし、ln.exeは私のニーズに適しています。ただし、GUIを使用した代替手段を用意したいと思います。
Estus Flask 2015

1
@PJMahoneyはい、これらはハードリンクです。ジャンクションとシンボリックのコピーに問題はありません。後者は後でコピーして修正することができます。私はそれを複製するつもりはありません。ディレクトリ構造(ディスク全体の一部です)を空でない別のディスクにコピーするだけです。
Estus Flask 2015

回答:


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

注: CPUアーキテクチャ用のこのソフトウェアを、ZIPファイルとvcredist(Visual C ++ Redistributable)からダウンロードしてインストールするだけのようです。次に、ZIPファイルから新しいフォルダー(.egなど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-コマンドラインハードリンク-スクリーンショットのダウンロード ここに画像の説明を入力してください

Link Shell Extension-スクリーンショットのダウンロード ここに画像の説明を入力してください


興味深いメモ

表示されたhard linksなど、そのファイルポインタ、のために同じディスクパーティションにロックされ、複数のパーティションにまたがって使用することはできません。また、hard linksNTFS では、パーティションはMaster File Tableレコード(または少なくともカウントの属性)の一部であるためMFT、パーティションレベルでバイト単位のクローンを作成しない場合、それを独自のディスクにコピーすることは問題のように見えます少なくとも。


4

コマンドラインユーティリティrsyncは、ユーザーの要求に応えます。

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

rsync -ahPruvz --hard-links A B

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

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

rsyncそれを取得して使用する方法は?Windowsには2つの簡単な代替手段があります。

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

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


これを明確にしていただきありがとうございます。私はrsyncをチェックしましたが、ハードリンクで実際に機能します(/ cygwin / driveletterとスラッシュは不快感を引き起こしますが、機能します)。
Estus Flask 2015

注: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にはハードリンクを保持するオプションがあるため(フラグ-H、-hard-links)、ジョブを実行する必要があります(ソース:https ://download.samba.org/pub/rsync/rsync.html )。

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

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


1
ソフトウェアを推奨するときは注意してください。書かれているように、あなたの答えはスパムとして見られるかもしれません。回答には、ソフトウェアの説明と、ソフトウェアが問題にどのように対処するかを含める必要があります。詳細:回答でソフトウェアをどのように推奨しますか?
bwDraco 2015年

1
以前はrsyncでこれを実現できませんでした(GUIにDeltaCopyを使用したことがあると思います)。これは、NTFSハードリンク実装と、rsyncが主に* nixツールであるという事実に関連している可能性があります。いくつかの説明をいただければ幸いです。
Estus Flask

1

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

火で火を消しなさい。robocopyは混乱を許容したので、robocopyを使用してクリーンアップも行います。

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

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

うまくいくはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.