当前位置: 首页 > 知识库问答 >
问题:

自动将SCP文件从多个目录(括号中)复制到适当的目录

程瑞
2023-03-14

我有一个bash脚本,用于从远程主机的不同目录复制一些文件。他们都有相同的父母。所以我把它们放进清单:

LIST=\{ADIR, BDIR, CDIR\}

我使用scp命令

sshpass -p $2 scp -o LogLevel=debug -r $1@192.168.121.1$/PATH/$LIST/*.txt /home/test/test

这个命令使我能够复制所有的文件。从ADIR、BDIR、CDIR到我的测试目录的txt文件。有没有什么办法可以让所有人。适当目录下的txt文件,如/home/test/test/ADIR或/home/test/test/BDIR?

共有2个答案

闾丘玺
2023-03-14

最后我的工作代码:

SOURCE='/usr/.../'
DEST='/home/test/test'
DIRS_EXCLUDED='test/ADIR test/BDIR'
EXTENSIONS_EXCLUDED='*.NTX *.EXE'

EXCLUDED_STRING=''

for DIR in $DIRS_EXCLUDED
do
    EXCLUDED_STRING=$EXCLUDED_STRING'--exclude '"$DIR"' '
done

for EXTENSION in $EXTENSIONS_EXCLUDED
do
    EXCLUDED_STRING=$EXCLUDED_STRING'--exclude '"$EXTENSION"' '
done

rsync -zavu $EXCLUDED_STRING --rsh="sshpass -p $2 ssh -l $1" 192.168.xxx.xxx:$SOURCE $DEST
贺宜修
2023-03-14

你考虑过使用rsync吗?

你可以尝试以下方法:

# Rsync Options
# -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
# -D                          same as --devices --specials
# -g, --group                 preserve group
# -l, --links                 copy symlinks as symlinks
# -o, --owner                 preserve owner (super-user only)
# -O, --omit-dir-times        omit directories from --times
# -p, --perms                 preserve permissions
# -r, --recursive             recurse into directories
# -t, --times                 preserve modification times
# -u, --update                skip files that are newer on the receiver
# -v, --verbose               increase verbosity
# -z, --compress              compress file data during the transfer


for DIR in 'ADIR' 'BDIR' 'CDIR'
do
        rsync -zavu --rsh="ssh -l {username}" 192.168.121.1:/$PATH/$DIR /home/test/test/
done
 类似资料:
  • 我正在使用QT,我无法找到如何将文件从一个目录复制到另一个目录?我怎样才能做到这一点?

  • 问题内容: 我想使用Java将文件从一个目录复制到另一个目录(子目录)。我有一个包含文本文件的目录dir。我遍历dir中的前20个文件,并想将它们复制到dir目录中的另一个目录中,该目录是我在迭代之前创建的。在代码中,我想将(代表第ith个文本文件或审阅)复制到。我怎样才能做到这一点?似乎没有这样的功能(或者我找不到)。谢谢。 问题答案: 目前,这应该可以解决你的问题 从类阿帕奇公地IO库,因为1

  • 问题内容: 说我在目录中还有一个文件。如何替换为使用?我在Windows XP上,跨平台的解决方案会很棒,但是Windows是首选。 问题答案: 您可以使用以下 功能: 在其手册页中引用了几个相关的句子: 将文件源的副本复制到dest。 如果目标文件已经存在,它将被覆盖。

  • 问题内容: 我最近开发了一个应用程序,并创建了jar文件。 我的课程之一创建了一个输出目录,并使用其资源中的文件填充该目录。 我的代码是这样的: 不幸的是,这不起作用。 我没有运气就尝试了以下方法: 使用Streams解决其他类上的类似问题,但不适用于dirs。代码类似于 http://www.exampledepot.com/egs/java.io/CopyFile.html 使用创建文件模板

  • Maven资源插件: 此目标要求配置要复制的资源,并指定OutputDirectory。 使用maven将中的两个(或更多)外部资源目录复制到构建输出目录(请参见和)。 下面是复制单个目录的示例: