3

Eclipse プロジェクトのデータベース フォルダーをバックアップするために phing を使用しています。フォルダー (C:\xampp\mysql\data[プロジェクト名]) をローカル エリア ネットワーク フォルダー (\[バックアップ コンピューターの IP アドレス]\projekte[プロジェクト名]\db) にコピーしたい。対応するスクリプトは

<target name="copy_to_lan" description="copy db files to local area network">
    <echo>Remove ${lan_folder}...</echo>
    <delete dir="${lan_folder}" includeemptydirs="true" failonerror="true" />

    <echo>Copying files from ${local_db_folder} to ${lan_folder} ..</echo>
    <copy todir="${lan_folder}" verbose="true" includeemptydirs="true">
        <fileset dir="${local_db_folder}">
            <include name="**" />
        </fileset>
    </copy>
</target>

残念ながら、スクリプトを実行すると、Eclipse は IOException: No read access to \[ip address of backup computer]\projekte[projectname]\db[projectname] in C:\xampp\php\PEAR\phing\system\io\ を通知します。 443 行目の PhingFile.php。

バックアップ コンピューター上のフォルダーの削除と作成は正常に機能しますが、ファイルのコピーは、アクセス許可エラーが原因であると思われます。別の方法として、mkdir によってバックアップ コンピューターにフォルダーを作成しました。これは機能しますが、ファイルを転送できないという同じ問題で終了します。

アドバイスをありがとう

4

1 に答える 1

4

このスライドシェアを見つけました。スライド #29 で、ping コピー タスクがネットワーク経由で機能しないことが言及されています。代わりに、phingexecコマンドで呼び出されるネイティブの Windows コマンド (Windows Vista 以降の xcopy または robocopy など) を使用する必要があります。

したがって、Windowsでは、次のようなpingタスクを使用する代わりに

<mkdir dir="${build.dir}" />

使用する

<exec passthru="1" command="mkdir ${build.dir}" />

またはあなたの場合、代わりにコピーする

<copy todir="${lan_folder}" verbose="true" includeemptydirs="true">
    <fileset dir="${local_db_folder}">
        <include name="**" />
    </fileset>
</copy>

使用する

<exec passthru="1" command="robocopy ${local_db_folder} ${lan_folder} /MIR" />

また

<exec passthru="1" command="xcopy ${local_db_folder}\*.* ${lan_folder} /I /Y /E" />

フラグの意味は次のとおりです。

  • /I : コピー先が存在せず、複数のファイルをコピーする場合、コピー先はディレクトリでなければならないと想定します

  • /Y : 既存の宛先ファイルを上書きするかどうかを確認するプロンプトを抑制します

  • /E : 空のディレクトリとサブディレクトリをコピーします

このpassthru属性はオプションですが、これらのコマンドで Windows エラーが出力されるため、デバッグに役立ちます。

それはネットワークドライブで動作します。

于 2012-03-14T09:54:04.390 に答える