使用 SCP 或不使用任何文件从 unix 向大型机发送两个文件的逻辑

发布于 2024-12-27 14:09:46 字数 861 浏览 0 评论 0原文

我在 unix 文件夹中创建了两个源文件,例如 file1.dat 和 file2.dat。

我需要使用 SCP 将文件发送到主机。

我编写的unix脚本如下:

if [[ -f $MY_DIR/$SOURCE1 ] -a [ -f $MY_DIR/$SOURCE2 ]]; then

       scp -P 2222 $MY_DIR/$SOURCE1 $MFDESTINATION1
       if [ $? -ne 0 ]; then
           ftp_status='100'
           $LOG_DIR/my_log $0 "(SCP FOR $SOURCE1) ended in ERROR"
           exit 255

       else         
          scp -P 2222 $MY_DIR/$SOURCE2 $MFDESTINATION2
          if [ $? -ne 0 ]; then
            ftp_status='100'
            $LOG_DIR/my_log $0 "(SCP FOR $SOURCE2) ended in ERROR"
            exit 255
          fi
      fi
fi

对于file1,逻辑工作正常,即如果file1传输导致错误,则不传输file2。

但如果文件 1 传输成功,则会启动文件 2 传输。如果失败,则 file1 已在 MF 中。

我不想那样。我想发送两个文件,或者都不发送。

如何实现这一目标?

我知道最后一个选项是如果文件 2 传输失败,则删除 MF 中的文件 1。但还有其他办法吗?

感谢您的阅读!

I have two source files created in unix folder say file1.dat and file2.dat.

I need to send the files to mainframe using SCP.

The unix script I wrote is as below:

if [[ -f $MY_DIR/$SOURCE1 ] -a [ -f $MY_DIR/$SOURCE2 ]]; then

       scp -P 2222 $MY_DIR/$SOURCE1 $MFDESTINATION1
       if [ $? -ne 0 ]; then
           ftp_status='100'
           $LOG_DIR/my_log $0 "(SCP FOR $SOURCE1) ended in ERROR"
           exit 255

       else         
          scp -P 2222 $MY_DIR/$SOURCE2 $MFDESTINATION2
          if [ $? -ne 0 ]; then
            ftp_status='100'
            $LOG_DIR/my_log $0 "(SCP FOR $SOURCE2) ended in ERROR"
            exit 255
          fi
      fi
fi

The logic works fine for file1 i.e. if file1 transfer results in error, do not transfer file2.

But if file1 transfer succeeds, file2 transfer gets initiated. If that fails, file1 is already in MF.

I dont want that. I want to send either both the files or none of them.

How to achieve that ?

I know last option is to delete file1 in MF if file2 transfer fails. But is there any other way ?

Thanks for reading!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

╰沐子 2025-01-03 14:09:46

我要做的是将文件传输到最终文件所在的同一文件系统上的临时位置(或使用远程服务不会拾取的临时名称),如果两次传输都成功,则重命名文件。如果您确保文件名可用,则在同一文件系统上重命名永远不会失败。

干杯,
米奇

What I would do is transfer the files to a temporary location on the same filesystem where the final files should be (or with a temporary name that won't be picked up by the remote service), and rename the files if both transfers were successful. The rename should never fail on the same filesystem if you make sure the filenames are available.

cheers,
mitch

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文