2016-05-06 6 views
2

Mac OS X Yosemite v.10.10.5。cpを使用してコマンドラインでディレクトリをコピーする際にエラーが発生しました

cpコマンドを使用して、1つのGitディレクトリを別のディレクトリにコピーしようとしています。

このコマンドラインステートメント:
cp -r /path/to/dir/from/ /path/to/dir/to/ 
戻り、このエラー:
cp: /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128: Permission denied 

このエラーは(私が信じていることが、確認されていない、である)のために、それぞれ1時間に返されたディレクトリ内のすべてのファイル。

コマンドを初めて実行したとき、予想どおりエラーなく正常に動作しました。しかし、ファイルを何も変更せずに、コマンドを実行した2回目以降のエラーが発生しました。

何が起こっているのですか?そして私はこれをどのように修正できますか?

編集:コメントに質問を受けて

What does ls -l /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128 show?

答えは、それは示しています

-r--r--r-- 1 myusername staff 6151 May 6 00:45 /path/to/dir/to/.git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128 
+0

@anubhavaにコピーしてください: '-r - r - r-- 1 myusername staff 6151 5月6日00:45/path/to/dir/to /。 git/objects/00/00ad2afeb304e18870d4509efc89fedcb3f128' – Mowzer

+1

このファイルには読み取り権限しかないので、書き込み権限が必要なので 'cp'は失敗しています。 – anubhava

+0

@anubhava:2つの質問。 1.書き込み権限を追加するにはどうすればよいですか? 2.なぜ私はそれを試して初めて 'cp'コマンドが動作したのですか? – Mowzer

答えて

2

Permission Deniedが表示されるのは、読み取り専用アクセス許可が設定されている宛先ディレクトリに既に存在するファイルを上書きしようとしているためです。上書きしようとしているように見えるので、コピー先のディレクトリがコピー操作の前に存在する場合は、それを削除することができます。また、あなたはあなたの問題を解決する必要があり、このようなコマンドを使用して-R、ない-r ...

Historic versions of the cp utility had a -r option. This implementation supports that option; however, its use is strongly discouraged, as it does not correctly copy special files, symbolic links, or fifo's.

を使用する必要があります。destが存在する場合は

[[ ! -d dest ]] || rm -rf dest ; cp -R src dest 

上記のチェックを。再帰的に削除する場合は、sourcedest

1

あなたはこの操作にcp -rpをしたいことがあります。 -pは、ファイルに関連付けられたユーザーIDとグループIDを保持します。 -pを使い始め、それが問題を解決するかどうか試してみてください。

この問題が発生する可能性があるAntherの理由は、アクセス許可が本当に拒否された場合です。つまり、スーパーユーザー権限を持たない別のユーザーが所有するフォルダにコピーしようとしている場合です。

+0

ありがとうございますが、この回答はうまくいかなかった。私は 'cp -rp'と' cp -r -p'の両方を試しました。 – Mowzer

+1

'cp -f'がより適切かもしれません(' -p'は悪い考えではありません)。 –

関連する問題