【问题标题】:Wait until zip fully written then continue, Bash Script等到 zip 完全写入,然后继续,Bash 脚本
【发布时间】:2015-01-30 02:17:26
【问题描述】:

我一直在尝试压缩一个文件,然后使用 bash 脚本通过 FTP 上传它,但它正在上传一个损坏的 zip 文件。我环顾四周,我正在尝试使用 lsof | grep 确认文件是否完整,但我不确定我在做什么。

所以我有

cd /var/test/tobezipped
zip -r test.zip *
FOLDER="/var/test/tobezipped"
ZIPS=$(ls $FOLDER)
for F in $zips ; do
  while [ -n "$(lsof | grep $F" ] ; do
  sleep 1
done
ftp -n <<EOF
open myserver
user user pass
put test.zip
EOF
done

并且 test.zip 在上传时已损坏,因此在另一台服务器上它不可读,但在服务器上它已压缩到我检查时一切正常。

感谢任何形式的建议,我对这类事情很陌生,并试图在堆中搜索以找到解决方案,但不太确定我是否朝着正确的方向前进。提前致谢。

【问题讨论】:

  • zip 看起来没问题,尝试在ftp here-doc 中添加binary 作为单独的行,就在put 命令之前。祝你好运。

标签: bash ftp zip corrupt


【解决方案1】:

试试这个。

PID=$(pgrep zip)
while [[ ( -d /proc/$PID) ) && ( -z `grep zombie /proc/$PID/status` ) ]]; do
    sleep 1
done

【讨论】:

    【解决方案2】:

    来自手册页:

    放置本地文件 [远程文件] 在远程机器上存储本地文件。如果未指定 remote-file,则在后面使用本地文件名 根据处理 命名远程文件时的任何 ntrans 或 nmap 设置。文件传输使用类型、格式、模式的当前设置, 和结构。

    我猜问题是您没有在 BINARY 模式下传输文件。

    试试这个:

    ftp -n <<EOF
    open myserver
    user user pass
    binary
    put test.zip
    EOF
    

    【讨论】:

    • 效果很好,非常感谢!我什至不能投票,因为没有足够的声誉,但有一个想象的。再次感谢你的队友
    猜你喜欢
    • 1970-01-01
    • 2015-07-11
    • 2015-11-14
    • 2019-12-22
    • 2023-03-27
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多