我在远程服务器上有一些文件。我需要将这些文件从远程服务器复制到本地服务器。
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中执行脚本。
答案 0 :(得分:1)
安排cron作业以执行脚本,请参阅scheduling-cron-jobs-with-crontab
答案 1 :(得分:1)
我将使用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