0

我在 bash 上调用 curl 以从已安装的 SD 卡中复制文件,如果设备被卸载,则可以选择稍后恢复复制。当我通过卸载卷中断复制并且文件被实际复制时,我收到相同的状态退出代码 0。任何建议如何捕捉文件未被复制的情况?

我一次只复制一个文件。

这是命令:

curl -C - -O file:///mnt/sdcard/DCIM/100/0044.MP4
4

2 回答 2

1

我找到了一个不像我想要的那样清晰但仍然有效的解决方案。我一个接一个地执行命令 2 次,所以当第一个命令在卸载时返回 0 时,第二个命令现在尝试复制文件并返回错误代码 37,因为源无法访问。如果第二个命令返回 0 我认为文件已复制。

于 2013-09-04T19:39:01.120 回答
1

按照你的概念,你可以有一个这样的脚本:

#!/bin/bash

# Copies files persistently.
#
# Usage: pc <filepath> [<filepath2>] ...
#
function pc {
    local FILE
    for FILE; do
        echo "Copying $FILE."
        until curl -C - -O "file://${FILE}" && curl -C - -O "file://${FILE}"; do
            if [[ -e $FILE ]]; then
                echo "File $FILE can't be copied."
                break
            else
                echo "Waiting for $FILE."
                until
                    sleep 5
                    [[ -e $FILE ]]
                do
                    continue
                done
            fi
        done
    done
}

pc "$@"

如果您愿意,也可以将该函数嵌入到 bash 启动脚本中。

于 2013-09-04T23:46:40.593 回答