shell - SFTP批处理文件从远程复制到本地
问题描述
我在远程服务器中有一些文件。我需要将这些文件从远程服务器复制到我的本地服务器。
Source path : pABCDWPPP@170.20.100.10:/SRC_path (dummy server name)
Target path : /data/TGT_path
我试过这个...
infa@vm-ppp-50:/data/TGT_path$ sftp -oPort=10000 pABCDWPPP@170.20.100.10:/SRC_path
SSH Server supporting SFTP and SCP
Connected to 170.20.100.10.
Changing to: /SRC_path
sftp> ls -l
-rw------- 1 200 100 17 Dec 04 15:15 test-20191204-1572921093125.csv
-rw------- 1 200 100 592 Dec 02 10:59 test-20191125-1574678916536.csv
-rw------- 1 200 100 9 Dec 04 15:15 t-20191204-1575253807720.csv
-rw------- 1 200 100 15 Dec 04 15:15 test-20191204-1575253807720.csv
-rw------- 1 200 100 17 Dec 04 15:16 test-20191204-1575426603349.csv
sftp> bye
我必须创建一个批处理脚本,该脚本应该将这些文件从源路径复制到目标路径。
文件名可以不同。但它有一些我可以用作变量的模式。
这是可以在脚本中使用的语法:
sftp -oPort=10000 ${USERID}@170.20.100.10:${MAILBOXPATH} <<EOF
mget ${FILE}
bye
EOF
谁能帮我创建可以每天以批处理模式复制这些文件的脚本文件。我必须在 unix 中执行脚本。
解决方案
我会使用非常适合此任务的 rsync 而不是 SFTP:
#!/bin/bash
# backup.sh
rsync --modify-window=5 -rltzuv --delete [REMOTE_SERVER@REMOTE_DIR] [LOCAL_SERVER@LOCAL_DIR]
然后您可以按如下方式运行 cron 作业:
crontab crontab.sh
在哪里:
# content of crontab.sh (scheduled to run everyday at 2am)
0 2 * * * /bin/sh /path/to/backup.sh
推荐阅读
- python - 带有 Python 的 Sqlite3 返回额外数据
- javascript - Google 表格:在日志表上记录单元格的新值
- android - Android 语音识别器。如何缓存“就绪”声音事件?
- django - Django - DRF 中的分页在 VueJS 中返回错误
- python - Python从csv文件中获取精确的单元格
- compilation - Toolkit.UWP 更新到 V5.0 后,应用程序无法在 X64 中编译(但在 X86 中正确)
- java - 如何仅在 Java Android 中解析具有多个索引的数组
- angular - 角度单元测试道具永远不会未定义
- python - 从 Python F 字符串中提取参数
- swift - unarchiveObject(with:) 已弃用