2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43

Windowsでファイルをコピーするときにファイルの属性を保存する方法は?

Linuxでは、

cp -pr directory

と単純にできますが、Windowsではどうすればいいのでしょうか?Windowsのエクスプローラで実行できますか?何かGUIツールの提案はありますか?

NTFSのパーミッションと作成/変更/アクセス時間を保てれば最高なんですが。最低限、ファイルとディレクトリの修正日を保持する必要があります。Windowsエクスプローラのコピーでは、ディレクトリの更新日を保存しません。

回答 (14)

23
23
23
2010-06-01 20:25:56 +0000

ロボコピーは /DCOPY:T スイッチでディレクトリの mtime を保存することができますが、これは Vista 以降でのみ動作します。また、ACLも保存することができます。また、FastCopyはディレクトリのmtime、ACL、およびADSesを保存するように設定することができます。

21
21
21
2012-03-05 14:33:18 +0000

… あるいは、zip アーカイブを作成して(圧縮方法を “Store "に設定して)、コピーしたい場所にファイルを解凍することもできます。日時属性は元のファイルと同じです。

10
10
10
2018-05-26 19:48:07 +0000

ロボコピーコマンドラインツール(ほとんどのバージョンのwindowsに付属) 私のwindows10のマシンではC:\Windows\System32

Wikipediaによると、ファイルとディレクトリのタイムスタンプやその他の属性を保存するために、以下のオプションセットで使用することができます。

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T オリジナルの ディレクトリのタイムスタンプを保存 (バージョンXP026以降が必要)
  • /E.
  • /R:0: 空のディレクトリを含むディレクトリを再帰的にコピー
  • /COPYALL: ロックされたファイルを再試行しない(コピー失敗時の再試行回数のデフォルト値は100万回)

  • /COPY:DATSOU: すべてのファイル情報をコピー

  • Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S.

  • /S: すべてのファイル情報をコピーする, (robocopy /?と同等。

日付とディレクトリのタイムスタンプを保存したいだけで、空のサブディレクトリをコピーしたくない、他の属性を保存したくない場合は、以下のようにしてください。
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

ここで、/XD空ではないサブディレクトリをコピーする

完全な構文を見るには、コマンドプロンプトで /L と入力するか、以下のブログ記事を参照してください。 https://ss64.com/nt/robocopy.html an https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

最近実行したコマンドの例。
show hidden files

2つのサブディレクトリを除外するには、show system files フラグを2回使用する必要があることに注目してください。また、2つ目のディレクトリの除外では、ディレクトリ名にスペースがあるため、引用符を使用しています。

最後に、実際にコマンドを実行する前に /A-:SH フラグを追加してテストすることができます。これにより、必要のないディレクトリやファイルがコピーされない(または削除されない)こと、コマンドにエラーがないことを確認することができます。

編集: ルートディレクトリ(別名ドライブ)からフォルダ(非ルートディレクトリ)にコピーするときの失敗

上記の例のコマンドを実行すると、ディレクトリが表示されませんでした。(Windows10ではRobocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIRと0x6&がチェックされていたのに!) https://serverfault.com/a/455029/399723 の通りに以下のコマンドを実行すると直りました。

attrib -h -s C:\D_backup

また、 https://serverfault.com/a/565804/399723 のように、0x6&を追加することで「システムファイルから隠し属性を解除する」ことで、そもそもディレクトリが非表示になるのを防ぐことができます。https://ss64.com/nt/robocopy.html ](https://ss64.com/nt/robocopy.html)も参照してください。
この descussion は、解決策としてのこのオプションについてより多くの光を与えています。

0x6&

その他のソフトウェア:

コマンドラインを使いたくない場合は、 GUI版の robocopy をダウンロードすることもできます。

もう一つのWindowsユーティリティは XCopy です。ゲットチャについてはリンク先を参照してください。

ロボコピーのウィキペディアのページ(この記事のトップにリンクされています)には、他にも使えるソフトがリストアップされています。

6
6
6
2010-05-27 23:04:39 +0000

Windowsでこれを行う簡単な方法はありません。
以下はそのトリックを実行してくれそうなプログラムです http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (リンクが壊れています。)

Windowsのエクスプローラだけでは無理です。

File times semantics

この記事では、ファイルの作成/変更/アクセス時間に関するセマンティクスを文書化する必要があります。

作成時刻: 対象のファイルが既に存在する場合、そのファイルの作成時刻は***保存されます。
最終更新時刻: ソースファイルの更新時刻から常にコピーされる。
最終アクセス時刻: 常に現在のシステム時刻に設定される。

4
4
4
2011-07-26 15:54:51 +0000

Synchronize It! (http://www.grigsoft.com/wndsync.htm)3.5は、すべてのタイムスタンプ(ファイルとフォルダ、変更と作成)を保持します。私が知っているWindows XP上では、Robocopy以外にはこのソフトが唯一完璧にタイムスタンプを保持してくれるソフトであり、私は色々と試してみました。ただし、FlashGet や Orbit Downloader のようなソフトウェアを使ってダウンロードしたソースファイルでは、破損したファイルが生成されることがあるので注意が必要です(結果として生成されるファイルのサイズは同じですが、実際にコピーされるのは 25kB だけで、残りはゼロで埋められています)。このようなソフトウェアが(速度を最適化するための)小さなパケットでファイルをダウンロードしていることと、私のデータパーティションが非常に断片化されていることが関係しているのだと思います。

Robocopy XP026は確かにWindows Vistaに含まれていますが、Windows XPでは動作します。Robocopy XP026」で検索してみてください。あるいは、Robocopy GUIをインストールして、System32フォルダの中にあるrobocopy.exeファイルを検索して、コマンドラインから使えるようにすることもできます。私が持っているファイルは208kBで、バージョン番号は5.1.2600.26です。

「バックアップモード」にバグがあるようですが、

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

ロボコピーのバージョンXP027ではどうやらこのバグはなくなったようですが、Windows XPでは動作しません。

3
3
3
2010-06-01 18:32:19 +0000

ロボコピーはCOPYALLスイッチでできるはずです。GUI版は Microsoft Technet から入手できます。

1
1
1
2014-10-19 01:19:44 +0000

私にとって今のところ一番シンプルな方法は、「send to」という方法です。これは外部アプリケーションを必要としません。私の経験では、元のファイルの属性をすべて保持します。

以前使っていた方法は、フォルダを圧縮・zipする方法でした。ただ、これはファイルをコピーするだけでなく、圧縮時も解凍時もファイルを処理して圧縮するので、確かに時間がかかります。

%appdata%\Microsoft\Windows\SendTo

とか。C:\Users\ _______ \AppData\Roaming\Microsoft\Windows\SendTo

コピーしたいファイルのあるフォルダにショートカットを追加して、コピーしたいファイルを右クリックするとsendtoメニューに項目が表示されます。

1
1
1
2012-12-06 02:51:42 +0000
1
1
1
2013-08-19 19:37:45 +0000
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

どのスイッチがファイルの日付を保持しているのかわからないけど、これで大丈夫。それから、C:\temp\Picsディレクトリをzipで圧縮してみた。

0
0
0
2012-10-14 14:50:02 +0000

フォルダやディレクトリを移動しても、作成日を保持したまま移動するのは簡単です。Shiftキーを押しながらフォルダを新しい場所にドラッグするだけです(移動コマンド)。変更された日付は現在の日付になりますが、作成された日付は元の日付を保持します。

0
0
0
2014-05-02 08:34:44 +0000

rsync -avu –modify-window=3602 sourcedirectory/ targetdirectory/

(これは、あるディレクトリから別のミラーへの同期ツールとして実際に使用されており、タイムウィンドウのオプションは、Windowsシステムがサマータイムなどのために時計を1時間動かした場合の問題を防ぐためです。

(linuxシステムと比較して)

Windows内のcygwin環境、またはwindowsドライブをマウントしたwindows内のlinux仮想マシン(例: virtualbox)

NB cygwinとvirtualboxはどちらも無料で、ある程度以上のlinux機能をwindows上で使用することができます - どちらも少し設定が必要です - 特にvirtualboxはそうですが、多くのメリットがあります….

私自身の問題は、ファイルは正しい時刻を持っているのにディレクトリは正しくないということでした。

0
0
0
2014-01-01 07:59:10 +0000

xcopyはこれに対応しています。k フラグを指定して属性をコピーするだけです。

Syntax xcopy Source [Destination][Optional parameters]

xcopyコマンドは、1つまたは複数のファイルまたはディレクトリツリーをある場所から別の場所にコピーすることができます。xcopy コマンドは、Windows 95 から Windows 8 までのすべてのバージョンの Windows に含まれています。

0
0
0
2014-08-12 14:57:58 +0000

このコマンドは、ファイルのタイムスタンプをコピーします。このコマンドは、フォルダ自体のタイムスタンプを正確に同じにするわけではないことに注意してください。また、コピー元 (Temp1) とコピー先 (Temp2) の両方に引用符を付けたことにも注意してください。これは、パスにスペースがある場合に行われます。私はスペースを入れていませんが、最悪の場合のために入れておくべきだと思いました。

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

フォルダのタイムスタンプを同じにするため。

robocopy /E /copy:DAT /dcopy:DAT “C:\Temp1” “c:\Temp2”

0
0
0
2013-02-11 13:33:03 +0000

フォルダを移動して作成日時を保存する簡単な方法は、これらのユーティリティを使用します http://lantechsoft.com/data-copy.html

ファイルをコピーしている間に日付を保存することができるもう一つのもの。 http://technocomsolutions.com/data-copy-tool.html