rsync失败,但仅在bash脚本中

贾利布拉斯

我有一个简单的两行bash脚本,可将csv文件(来自Web应用程序的用户列表)复制到远程服务器。

#! /bin/bash 

/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog 
rsync /home/james/data/TMTUsers.csv myserver.com:~/data/TMTtest.csv >> /home/james/logs/TMTUserExportLog 2>> /home/james/logs/TMTerrlog

第一个只是调用生成csv文件的python脚本,将其存储在/home/james/data/TMTUsers.csv中,并输出一些我存储在日志文件中的数据。第二行将文件同步到远程服务器(ssh设置为使用无密码身份验证)

现在,这是奇怪的事情。当我通过命令行交互方式或作为cron作业运行此脚本时,python脚本可以正常工作并生成正确的文件,但rsync仅传输文件的10%至15%(800kb文件中约100kb),每次似乎都停留在不同的位置。没有错误输出(如您所见,我将重定向到日志文件)。但是,当我从命令行运行完全相同的rsync命令时,它运行良好(整个文件已传输)。我尝试使用rcp而不是rsync,发生了相同的事情。

我在本地服务器上运行Ubuntu 12.04,在远程服务器上运行14.04。

有什么想法吗??

戈登·戴维森

问题是&此行中的:

/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog & date >> /home/james/logs/TMTUserExportLog

&告诉shell运行UserList.py在后台,并继续无需等待它完成。这实际上有几个坏的影响:一方面,二者UserList.pydate试图同时追加到日志中,更重要的是rsync在运行之前UserList.py有机会完成创建CSV文件。这就是为什么它不会全部转移的原因-转移发生时它并不全部存在。

修复很容易,只需&按可预测的顺序丢失并分别运行每个命令即可(请注意,我认为日期应在日志中排在首位):

#! /bin/bash 

date >> /home/james/logs/TMTUserExportLog 
/home/james/bin/UserList.py >> /home/james/logs/TMTUserExportLog
rsync /home/james/data/TMTUsers.csv myserver.com:~/data/TMTtest.csv >> /home/james/logs/TMTUserExportLog 2>> /home/james/logs/TMTerrlog

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

grep输出仅在bash脚本中打印一行

来自分类Dev

LD_LIBRARY_PATH在bash脚本中失败

来自分类Dev

rsync bash脚本复制目录结构?

来自分类Dev

从bash脚本启动进程失败

来自分类Dev

仅在构建失败时执行最终脚本

来自分类Dev

bash脚本中的Expect命令失败

来自分类Dev

在bash脚本中引用rsync的排除问题

来自分类Dev

从人偶执行bash脚本失败

来自分类Dev

Alfred Workflow Bash脚本失败

来自分类Dev

脚本仅在Powershell中运行

来自分类Dev

rsync抱怨Bash脚本中的“缺少尾随”

来自分类Dev

grep输出仅在bash脚本中打印单行

来自分类Dev

cron脚本中的Rsync行为

来自分类Dev

在bash脚本失败时调用脚本

来自分类Dev

bash脚本从远程主机rsync本身-如何?

来自分类Dev

仅在bash脚本中显示部分日志文件

来自分类Dev

Bash脚本从rsync传输获取结果并将其压缩为原始目录中的目录

来自分类Dev

脚本中的RSync错误

来自分类Dev

备份脚本失败,并在带引号的变量中包含rsync命令的选项

来自分类Dev

bash脚本“(”仅在移动设备上意外

来自分类Dev

rsync bash脚本“无法统计”

来自分类Dev

bash脚本执行中的rsync未知选项

来自分类Dev

内部脚本失败后在外部Bash脚本中清理

来自分类Dev

bash脚本中的rsync问题

来自分类Dev

Bash脚本无故失败

来自分类Dev

bash脚本中的Expect命令失败

来自分类Dev

为什么这些rsync过滤器args在数组中传递时在bash中失败?

来自分类Dev

从人偶执行bash脚本失败

来自分类Dev

Bash 脚本仅在 bash 脚本文件所在的路径中工作