如何在 bash 脚本和通配符中使用 scp
How to use scp in a bash script and wildcards
我有一个 bash 脚本来使用 scp 从远程服务器检索文件。
我的脚本如下所示:
read -p 'Enter pattern: ' VAR_DATE
SCPUSER='user'
SCPHOST='server.de'
SCPDIRECTORYREMOTE='/some/directory/remote'
LOCALDIR='/my/local/directory/somewhere'
scp $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/test.txt" $LOCALDIR
scp $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/*_$VAR_DATE.pdf" $LOCALDIR
不幸的是,只下载了第一个文件 (test.txt)。在我使用通配符 (*) 的所有其他文件中,我收到错误 scp: /some/directory/remote/*_MY_PATTERN No such file or directory
我尝试了很多 solutions suggested 使用单 and/or 双引号。
到目前为止还没有人工作。我做错了什么?
更新
这是 bash -x
的输出
+ read -p 'Enter pattern: ' VAR_DATE
Enter pattern: dffff
+ VAR_DATE=dffff
+ SCPUSER=user
+ SCPHOST=server.de
+ SCPDIRECTORYREMOTE=/some/directory/remote
+ LOCALDIR=/my/local/directory/somewhere
+ scp user@server.de:/some/directory/remote/test.txt /my/local/directory/somewhere
test.txt 100% 2120 77.8KB/s 00:00
+ scp 'user@server.de:/some/directory/remote/*_dffff' /my/local/directory/somewhere
scp: /some/directory/remote/*_dffff: No such file or directory
我怀疑本地 globbing 有问题。这看起来是使用 tar
和 ssh
的绝佳位置。像,
ssh $SCPUSER@$SCPHOST "tar czf - $SCPDIRECTORYREMOTE/*_$VAR_DATE*" \
| tar xvzf - -C $LOCALDIR
我有一个 bash 脚本来使用 scp 从远程服务器检索文件。
我的脚本如下所示:
read -p 'Enter pattern: ' VAR_DATE
SCPUSER='user'
SCPHOST='server.de'
SCPDIRECTORYREMOTE='/some/directory/remote'
LOCALDIR='/my/local/directory/somewhere'
scp $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/test.txt" $LOCALDIR
scp $SCPUSER@$SCPHOST:"$SCPDIRECTORYREMOTE/*_$VAR_DATE.pdf" $LOCALDIR
不幸的是,只下载了第一个文件 (test.txt)。在我使用通配符 (*) 的所有其他文件中,我收到错误 scp: /some/directory/remote/*_MY_PATTERN No such file or directory
我尝试了很多 solutions suggested 使用单 and/or 双引号。
到目前为止还没有人工作。我做错了什么?
更新
这是 bash -x
+ read -p 'Enter pattern: ' VAR_DATE
Enter pattern: dffff
+ VAR_DATE=dffff
+ SCPUSER=user
+ SCPHOST=server.de
+ SCPDIRECTORYREMOTE=/some/directory/remote
+ LOCALDIR=/my/local/directory/somewhere
+ scp user@server.de:/some/directory/remote/test.txt /my/local/directory/somewhere
test.txt 100% 2120 77.8KB/s 00:00
+ scp 'user@server.de:/some/directory/remote/*_dffff' /my/local/directory/somewhere
scp: /some/directory/remote/*_dffff: No such file or directory
我怀疑本地 globbing 有问题。这看起来是使用 tar
和 ssh
的绝佳位置。像,
ssh $SCPUSER@$SCPHOST "tar czf - $SCPDIRECTORYREMOTE/*_$VAR_DATE*" \
| tar xvzf - -C $LOCALDIR