3

我正在使用 phing 备份 Eclipse 项目的数据库文件夹。我想将文件夹(C:\xampp\mysql\data[projectname])复制到局域网文件夹(\[备份计算机的ip地址]\projekte[projectname]\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 adress of backup computer]\projekte[projectname]\db[projectname] in C:\xampp\php\PEAR\phing\system\io\ PhingFile.php 在第 443 行。

在备份计算机上删除和创建文件夹确实可以正常工作,但复制文件并不是由于权限错误,因为它似乎是。作为替代方案,我还通过 mkdir 在备份计算机上创建了该文件夹,该文件夹有效但以同样的问题结束,即无法传输文件。

感谢您的建议

4

1 回答 1

4

我发现这个幻灯片共享在幻灯片 #29 上提到 phing 复制任务不能通过网络工作您必须改用在 phingexec命令中调用的本地 Windows 命令(例如,从 Windows Vista 开始的 xcopy 或 robocopy)。

所以在windows上而不是使用像

<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 回答