1

Git bash (Windows 7)を使用してホーム ディレクトリをコピーしようとするとcp、必要以上のものがコピーされます。以下は、この問題を示す例です。実際には、再帰的にコピーしたいのですが、この例ではスピードアップするつもりはありません。

Simon@SIMONS-DATOR ~
$ mkdir /c/test

Simon@SIMONS-DATOR ~
$ cp ./* /c/test
cp: omitting directory `./AppData'
cp: omitting directory `./Contacts'
cp: omitting directory `./Cookies'
cp: omitting directory `./Desktop'
cp: omitting directory `./Documents'
cp: omitting directory `./Downloads'
cp: omitting directory `./Dropbox'
cp: omitting directory `./Favorites'
cp: omitting directory `./GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}'
cp: omitting directory `./Links'
cp: omitting directory `./Lokala inst\303\244llningar'
cp: omitting directory `./Mallar'
cp: omitting directory `./Mina dokument'
cp: omitting directory `./Music'
cp: `./NTUSER.DAT.exe' and `/c/test/NTUSER.DAT' are the same file
cp: omitting directory `./N\303\244tverket'
cp: omitting directory `./Pictures'
cp: omitting directory `./Programdata'
cp: omitting directory `./Recent'
cp: omitting directory `./Saved Games'
cp: omitting directory `./Searches'
cp: omitting directory `./SendTo'
cp: omitting directory `./Skrivare'
cp: omitting directory `./Start-meny'
cp: omitting directory `./Videos'
cp: `./ntuser.dat.LOG1.exe' and `/c/test/ntuser.dat.LOG1' are the same file
cp: `./ntuser.dat.LOG2.exe' and `/c/test/ntuser.dat.LOG2' are the same file

Simon@SIMONS-DATOR ~
$ ls /c/test
NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TM.blf
NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{016888bd-6c6f-11de-8d1d-001e0bcde3ec}.TMContainer00000000000000000002.regtrans-ms
NTUSER.DAT{6a7ede06-4c18-11e0-86c3-00262d9124f7}.TM.blf
NTUSER.DAT{6a7ede06-4c18-11e0-86c3-00262d9124f7}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{6a7ede06-4c18-11e0-86c3-00262d9124f7}.TMContainer00000000000000000002.regtrans-ms
NTUSER.DAT{8ef111c8-e816-11df-8bd5-00262d9124f7}.TM.blf
NTUSER.DAT{8ef111c8-e816-11df-8bd5-00262d9124f7}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{8ef111c8-e816-11df-8bd5-00262d9124f7}.TMContainer00000000000000000002.regtrans-ms
NTUSER.DAT{e9e59e5b-940d-11e0-8662-00262d9124f7}.TM.blf
NTUSER.DAT{e9e59e5b-940d-11e0-8662-00262d9124f7}.TMContainer00000000000000000001.regtrans-ms
NTUSER.DAT{e9e59e5b-940d-11e0-8662-00262d9124f7}.TMContainer00000000000000000002.regtrans-ms
_.swp
_viminfo
ntuser.ini
php_errors.log

これらの ntuser ファイルをコピーしないでください。また、再帰的にコピーする場合、次のフォルダーをコピーしたくありません (翻訳は右側に試行されます)。

~/Contacts
~/Cookies
~/Lokala inställningar    (Local settings)
~/Mallar                  (Templates)
~/Mina dokument           (My documents)
~/Nätverket               (The network)
~/Programdata
~/Recent
~/SendTo
~/Skrivare                (Printers)
~/Start-meny              (Start menu)

再帰的にコピーしようとすると、上記のすべてのフォルダーが宛先に作成されますが、それらへのアクセスが拒否されているように見えるため、それらは空のままになります。

cp: cannot access `/c/Users/Simon/Cookies': Permission denied
cp: cannot access `/c/Users/Simon/Documents/Min musik': Permission denied
cp: cannot access `/c/Users/Simon/Documents/Mina bilder': Permission denied
cp: cannot access `/c/Users/Simon/Documents/Mina videoklipp': Permission denied
cp: cannot access `/c/Users/Simon/Lokala inst\303\244llningar': Permission denied
cp: cannot access `/c/Users/Simon/Mallar': Permission denied
cp: cannot access `/c/Users/Simon/Mina dokument': Permission denied
`/c/Users/Simon/NTUSER.DAT' -> `/e/Backup/Simon/NTUSER.DAT'
cp: `/c/Users/Simon/NTUSER.DAT.exe' and `/e/Backup/Simon/NTUSER.DAT' are the same file
cp: cannot access `/c/Users/Simon/N\303\244tverket': Permission denied
cp: cannot access `/c/Users/Simon/Programdata': Permission denied
cp: cannot access `/c/Users/Simon/Recent': Permission denied
cp: cannot access `/c/Users/Simon/SendTo': Permission denied
cp: cannot access `/c/Users/Simon/Skrivare': Permission denied
cp: cannot access `/c/Users/Simon/Start-meny': Permission denied
`/c/Users/Simon/ntuser.dat.LOG1' -> `/e/Backup/Simon/ntuser.dat.LOG1'
cp: `/c/Users/Simon/ntuser.dat.LOG1.exe' and `/e/Backup/Simon/ntuser.dat.LOG1' are the same file
`/c/Users/Simon/ntuser.dat.LOG2' -> `/e/Backup/Simon/ntuser.dat.LOG2'
cp: `/c/Users/Simon/ntuser.dat.LOG2.exe' and `/e/Backup/Simon/ntuser.dat.LOG2' are the same file

上記のログからわかるように、追加の不要なフォルダーがあるようです~/Documents(右への翻訳の試み):

./Min musik          (My music)
./Mina bilder        (My pictures)
./Mina videoklipp    (My video clips)

とにかく、許可が拒否されているので、私はこの問題にあまり苦しむことはありません: いくつかの余分な不要な空のフォルダーといくつかの余分な不要なファイルが宛先フォルダーにあり、いくつかの「許可が拒否されました」と不平を言ってcpいますログ。

コマンドを試す前は、cpこれらのファイルについてさえ知りませんでした。どうやら、フォルダー オプションで [保護されたオペレーティング システム ファイルを非表示にする (推奨)] のチェックを外す必要があります。これにより、Windows エクスプローラーに表示されるようになり、ショートカットと同じように小さな矢印が表示されます。 、隠しファイルと同様に半透明です(のように~/AppData)。

cp $src "$dstdir" --update --archive --backup=numbered --verbose実際の使用法は、実際のコピーを実行するためshopt -s extglob; shopt -s dotglobに使用する小さなバックアップ スクリプト用です(再帰的なコピーsrc="/c/Users/Simon/!(AppData)"を意味することに注意してください)。編集:上記のバックアップスクリプトで達成したいことは、ユーザーフォルダー内のほとんどのファイルをバックアップすることです(最も重要なのは、ドキュメント、写真、ビデオですが、たまたまそこにある .ssh と .gitconfig などです) (VonCの回答からのアドバイスに従わない限り))。たまたま Git bash を使用していたのは、すでにインストール済みだったからで、必要なバックアップを行うための非常に簡単な方法を提供してくれました。Gitとは関係ありません。さらに下の追加の編集も参照してください。--arcgive

cpでは、コマンドがこれらのファイルをコピーしようとするのを防ぐにはどうすればよいでしょうか? (代わりに、何か他のものを使用する必要がありcpますか? (あいまいな質問、私は知っていますが、それは主要なものではありません。必要に応じて詳しく説明できます。))

元のサブ質問: そして、これらのファイルは何ですか? (私が覚えている限りでは、それらの多くは Windows XP の「通常の」フォルダとして存在します。)編集:おそらく Windows XP の残り物です。少なくともローカル設定は.

編集: 私の根本的な問題であると思われるファイルをバックアップする目的で、VonCのおかげで多くの解決策とオプションがあります:

に設定%HOME%しました/c/git。これは、すべてのリポジトリを既に保持している場所であるため、すべての Git (bash) ファイルを 1 か所で利用できます。さらに、バックアップが容易になります: (前述のように) バックアップする代わりに、/c/Users/Simon/!(AppData)より具体的なターゲットを簡単に指定できます。

"/c/Users/Simon/Documents/*"
"/c/Users/Simon/Music/*"
"/c/Users/Simon/Pictures/*"
"/c/Users/Simon/Videos/*"
"/c/Users/Simon/Desktop/*"

したがって、私はほとんど問題を回避しましたが、まだ不要なフォルダーが~/Documents残っています (上記を参照)。

やなどの Windows 固有のツールの方がおそらくバックアップに適していることは理解できxcopyましたが、今のところはWindows のコマンド ラインに飛び込む必要のないシンプルさを好みます。xxcopyrobocopycp

バックアップに関するこれらの長いコメントが誰かの役に立てば幸いです。「以外のものを使用する必要がありcpますか?」と考えます。質問は完全に回答され、私の主な問題はほとんど解決されました。

それでも、 「コマンドがこれら/そのようなファイルをコピーしようとするのを防ぐにはどうすればよいですか?」cp質問は未解決のままであり(「Windows固有のツールを使用する」という種類の回答を除く)、多くの人に関連する可能性があります。

4

1 に答える 1

0

バックアップのスクリプト作成が必要な場合は、cp を避け、xxcopyなどの Windows ユーティリティを使用することをお勧めします。除外リストを使用して
、増分シナリオを含むあらゆる種類の bazckup シナリオを管理できます。


元のgit中心の回答

git-cmd.batgit-bashwil ltryの両方が定義されていない%USERPROFILE%場合に使用します。%HOME%

git コマンドを呼び出すに環境変数を定義する%HOME% ことをお勧めします。これにより、git ( 、、、...)を使用して開発するために必要なものだけを含めることができます。HOME.gitconfig_netrc.ssh

cpそうすれば、膨大な混乱を整理しようとするのではなく、必要なものを正確に制御できます/c/Users/aLoginName

于 2013-02-11T07:12:26.983 に答える