8

PHP でフォルダーを移動しようとしていますが、重複している場合は両方のファイルをdestフォルダーに保持します。私は再帰的にそれを試みましたが、複雑すぎるため、ファイルの前提条件や重複したファイル\フォルダーなど、多くのことがうまくいかない可能性があります。

system() コマンドを使用しようとしていますが、ファイルを移動する方法がわかりませんが、拡張機能を破棄せずに重複する場合はバックアップを保持します

$last_line = system('mv --backup=t websites/test/ websites/test2/', $retval);

ファイルが両方のディレクトリに存在する場合、次のようになります。

ajax.html~
ajax.html~1
ajax.html~2

私が探しているのは:

ajax~.html
ajax~1.html
ajax~2.html

または(1)、(2)のようなもの...ただし、ファイルの拡張子を損なうことはありません。何か案は?お願いします。

ps は system() コマンドを使用する必要があります。

4

6 に答える 6

0

元のファイルを保持してコピーを作成する場合は、cpnotを使用しますmv

バックアップアーカイブを作成する場合は、次のようにフォルダのtargzipを実行します

tar -pczf name_of_your_archive.tar.gz /path/to/directory/to/backup

于 2013-03-20T16:57:04.203 に答える
0
rsync --ignore-existing --remove-source-files /path/to/source /path/to/dest
于 2013-03-20T17:01:53.910 に答える
0

およびオプションrsyncとともに使用します。例えば:--backup--backup-dir

rsync -a --backup --backup-dir /usr/local/backup/2013/03/20/ /path/to/source /path/to/dest

ファイルが上書きされるたびに、指定されたフォルダーとそのアイテムへのパスにコピーされます。例えば:/path/to/dest/path/to/source/file.txt

于 2013-03-20T17:10:34.907 に答える
0

一見すると、拡張子を正しい場所に保ちながらファイルをバックアップする組み込みの方法はないようです。間違っている可能性がありますが、元の質問がすでに指摘していることを実行しないものを見つけることができませんでした.

php を使用してファイルをコピーするのは複雑だとおっしゃっていたので、現在行っているのと同じ方法で、ファイルを次の形式で取得することができるかもしれません。

ajax.html~
ajax.html~1
ajax.html~2

次に、PHP を使用してファイルを解析し、必要な形式に名前を変更します。このようにして、あなたが言及した複雑さであるアクセス許可や重複ファイルに対処する必要がなくなります。この形式のファイルを探して、名前を変更するだけです。

于 2013-03-20T18:24:32.440 に答える