由于我经常通过网络将不同数量的特定文件复制到(相当复杂的)目标目录中,如果我可以使用cp's-t标志,我的生活会容易得多:有了它,您可以指定目标目录“在开始”——而不是作为最后的论点。
这样,我可以CTRL-R先复制命令,然后再CTRL-W复制以前复制的文件,而不管之前有多少文件,始终保留(复杂的)设置和目标目标系统和目录。
但是我找不到任何合适的标志,无论是 forscp还是 for rsync。(如果其中一个提供此选项,我会使用其中之一。)
做scp或rsync提供类似的东西cp -t?
在绝望中,我什至玩弄了bash的历史控制,尤其是参数提取机制:不幸的是,似乎不可能以“第x个参数到最后一个参数”的形式指定范围。but-one”,这是我需要的,因为我并不总是有参数的数量(除非我计算......)。
所以我设置了 ssh 密钥,通过 cli 对其进行了测试,并且一切正常。当我运行 SCP 文件传输时,它会询问我两台机器的密码,但如果我只是 ssh 到同一台服务器,它不会。
下面是我正在运行的 scp。如果我在提示文件传输通过时输入密码,我只是想避免每次都输入密码。
sudo scp -r root@xxx.xxx.xxx.xxx:/var/spool/servera/backup/2018Backups /home/serverb/Documents/2018Backups
Run Code Online (Sandbox Code Playgroud) 我想知道如何在 bash 脚本中复制或 shell 复制多个文件。我的意思是
cp /path/to/source/{file1,file2,file3} /path/to/dest
Run Code Online (Sandbox Code Playgroud)
和
scp /path/to/source/{file1,file2,file3} user@host:/path/to/dest
Run Code Online (Sandbox Code Playgroud)
会工作正常,但作为例子
#!/bin/sh
scp /path/to/source/{file1,file2,file3} user@host:/path/to/dest
Run Code Online (Sandbox Code Playgroud)
会抛出这样的错误:
/path/to/source/{file1,file2,file3}: No such file or directory
Run Code Online (Sandbox Code Playgroud)
如果您将复制或 shell 复制单个文件,则它可以工作,因此问题是多个文件。如果我将*用于所有文件但我不想复制所有文件,它也有效。我应该只复制选定的文件,因为在两个文件夹中都是名称相同但内容不同的文件。从而复制所有文件然后删除不需要的文件是行不通的。
为了更好地理解以下内容将起作用:
#!/bin/sh
scp /path/to/source/file1 user@host:/path/to/dest
Run Code Online (Sandbox Code Playgroud)
还有以下内容:
#!/bin/sh
scp /path/to/source/* user@host:/path/to/dest
Run Code Online (Sandbox Code Playgroud)
所以它与正确使用{ ... }多个文件有关,这些文件将在终端内工作,但如果我在其中运行 bash 脚本则不会。
提前致谢。
//编辑:
如果我用 cp 尝试,我会添加错误:
cp: cannot stat '/path/to/source/{file1,file2,file3}': No such file or directory
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过 shh 连接将数据复制到远程服务器。
我收到以下错误:
[localhost]: scp: illegal option -- 0
[localhost]: usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[localhost]: [-l limit] [-o ssh_option] [-P port] [-S program]
[localhost]: [[user@]host1:]file1 ... [[user@]host2:]file2
Run Code Online (Sandbox Code Playgroud)
我使用的脚本执行此请求:
scp -p10012 /Users/trst/Docs/repositories/pro/.envoydeploy/tmp/servers/172.12.11.150 admin@172.12.11.150:/var/www/pro/tmp/service_owner
Run Code Online (Sandbox Code Playgroud) 我可以使用以下方法将存档从本地复制到服务器:
scp forum.tar.gz root@servername:/root/
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从服务器发送到本地时
[root@iz2ze9wve43n2nyuvmsfx5z ~]# scp draft.md root@localhot:/
ssh: Could not resolve hostname localhot: Name or service not known
lost connection
Run Code Online (Sandbox Code Playgroud)
我怎样才能完成这项工作,
我是否必须依赖 github 来提交和拉取?
我的网络接口卡读写速率是 1000MB/S,但是当我 scp 一个文件时,它显示复制速度是 120MB/S。如:scp test.gz localhost:/data/test.gz