bash中的rsync没有解析php生成的--exclude-from文件

时间:2013-05-11 10:32:07

标签: php bash rsync

我的rsync bash脚本没有解析我的--exclude-from文件是通过php生成的,但是如果我在本地手动创建(作为root)同一个确切的文件。我在Xubuntu 12.10系统上有一个Web界面,它在本地写入rsync --exclude - 来自文件,然后通过rcp将它们推送到运行rsync脚本的(CentOS 6)备份盒。 (关于rcp请不要随便摇晃......我知道 - 在这种情况下我们没有选择。)

网页写文件:

PHP:

file_put_contents($exclfile, $write_ex_val);

然后从网络服务器上的本地bash脚本推送到备份框:

击:

rcp -p /path/to/file/${servername}_${backupsource}.excl ${server}:/destination/path

我已经将手工创建的文件(有效)的权限和所有权与php / rcp&d(不是)的相同文件进行了比较,他们& #39;两者都是一样的:

Bash:

stat -c '%a' server_backupsource_byhand.excl 
644

stat -c '%a' server_backupsource_byphp.excl 
644

ls -l server_backupsource_byhand.excl 
-rw-r--r-- 1 root root 6 May 11 05:57 server_backupsource_byhand.excl 

ls -l server_backupsource_byphp.excl 
-rw-r--r-- 1 root root 6 May 11 05:58 server_backupsource_byphp.excl 

如果相关,请参阅我的rsync行:

BASH:

rsync -vpaz -v --exclude-from=${exclfile} /mnt/${smbdir} /backup

我怀疑php可能正在以不同的格式编写文件(例如UTF8而不是ANSI),但我无法弄清楚如何测试它,并且在这里知识有限。

有没有人对如何解析php / rcp生成的文件有任何建议?

1 个答案:

答案 0 :(得分:0)

使用diff和文件我发现php编写的版本没有编写换行符。在我的变量定义中,我使用了“。” as“$ write_ex_val。”删除此“。”让php写新行。我还删除了变量和“\ n”之间的空格,虽然我不确定这是否有助于解决方案。我赞成评论,厄尔,但我认为我没有足够的代表。再次感谢。