もうずっと、fsutilにハマっています。最初は打ちにくかったfsutilという名前も、入力しやすくて覚えやすい名前だなあと分かってきました。
今回は、hardlinkを使います。
ハードリンクの作成には、createサブコマンドを使います。
C:\Users\takk2>fsutil hardlink create 使用法 : fsutil hardlink create <新しいファイル名> <既存のファイル名> 例 : fsutil hardlink create c:\foo.txt c:\bar.txt C:\Users\takk2>
まず適当にファイルを作成し、
C:\Users\takk2\tmp>echo HELLO>a.txt C:\Users\takk2\tmp>dir ドライブ C のボリューム ラベルがありません。 ボリューム シリアル番号は 6C92-6118 です C:\Users\takk2\tmp のディレクトリ 2019/03/02 02:05 <DIR> . 2019/03/02 02:05 <DIR> .. 2019/03/02 02:05 7 a.txt 1 個のファイル 7 バイト 2 個のディレクトリ 194,024,587,264 バイトの空き領域 C:\Users\takk2\tmp>
ハードリンクを作成。右から左へリンクするので注意が必要です。Linuxのlnコマンドとは逆の指定です。
C:\Users\takk2\tmp>fsutil hardlink create b.txt a.txt C:\Users\takk2\tmp\b.txt <<===>> C:\Users\takk2\tmp\a.txt のハードリンクが作成されました C:\Users\takk2\tmp>
中身は確認できるでしょうか。
C:\Users\takk2\tmp>type b.txt HELLO C:\Users\takk2\tmp>
元のファイルを削除してみます。
C:\Users\takk2\tmp>type b.txt HELLO C:\Users\takk2\tmp>
ハードリンクした方のファイルは消えませんでした。
次は、File IDを確認したいと思います。b.txtのハードリンクa.txtを作成し、両者のFileIDを確認します。
C:\Users\takk2\tmp>fsutil hardlink create a.txt b.txt C:\Users\takk2\tmp\a.txt <<===>> C:\Users\takk2\tmp\b.txt のハードリンクが作成されました C:\Users\takk2\tmp>fsutil file queryFileID a.txt ファイル ID は 0x0000000000000000000b000000017791 です C:\Users\takk2\tmp>fsutil file queryFileID b.txt ファイル ID は 0x0000000000000000000b000000017791 です C:\Users\takk2\tmp>
同じIDですね。つまりファイルコピーではありません。内容を変更すると分かりますね。
C:\Users\takk2\tmp>type a.txt HELLO C:\Users\takk2\tmp>echo AAAA>>a.txt C:\Users\takk2\tmp>type a.txt HELLO AAAA C:\Users\takk2\tmp>
では、b.txtの内容も確認。
C:\Users\takk2\tmp>type b.txt HELLO AAAA C:\Users\takk2\tmp>
両ファイルは同じファイルですね。なかなか使えそうなコマンドです。
コメント