【发布时间】:2017-02-16 22:25:17
【问题描述】:
我正在使用 GNU 并行复制文件,如下所示,它工作正常。
export COPY_PRI=/abc/pri
export COPY_SEC=/pqr/sec
export status_dir=$(mktemp -t -d transfer.XXXXXX)
cleanup() { rm -rf "$status_dir"; }
trap cleanup 0
copy() {
el=$1
PRIMSEC=$2
scp bullseye@"$MACHINE_ONE":"$dir3"/process_"$el"_210_5.data "$PRIMSEC"/. || { touch "$status_dir/local_down" && scp bullseye@"$MACHINE_TWO":"$dir3"/process_"$el"_210_5.data "$PRIMSEC"/.; } || { touch "$status_dir/pri_down" && scp bullseye@"$MACHINE_THREE":"$dir3"/process_"$el"_210_5.data "$PRIMSEC"/.; } || { touch "$status_dir/sec_down" && exit 1; }
}
export -f copy
parallel -j 3 copy {} $COPY_PRI ::: "${PRI_FILES[@]}" &
parallel -j 3 copy {} $COPY_SEC ::: "${SEC_FILES[@]}" &
wait
现在我想在复制任何新文件之前检查磁盘空间。如果磁盘剩余 20% 的空间,则仅在剩余空间不足 20% 时复制,然后退出 shell 脚本并显示错误消息和非零状态代码。那么如何在每次 scp 复制后检查磁盘空间并确保它没有达到限制?我必须检查/abc 和/pqr 磁盘。它们是两个不同的磁盘。
【问题讨论】:
-
你有两个命令“df”和“du”en.wikipedia.org/wiki/Df_(Unix)
-
是的,我知道,但是在每次复制任何内容之前如何检查是否剩余 20% 的空间?
标签: linux bash shell disk gnu-parallel