it-swarm.cn

如何使scp复制隐藏文件?

我经常使用SCP来复制文件-特别是与Web相关的文件。问题在于,无论何时执行此操作,都无法获取复制隐藏文件的命令(例如,.htaccess)。

我通常会这样调用:

scp -rp src/ [email protected]:dest/

这不会复制隐藏文件。我不想再调用一次(通过执行scp -rp src/.* ...-并且有奇怪的...的含义。

scp手册页上没有任何有关“包含隐藏文件”的信息。

我该怎么做?

64
rascher

那应该绝对匹配隐藏文件。源代码末尾的/表示“此目录下的每个文件”。但是,测试和研究可以帮助您。这是愚蠢的行为。

answer ”将在源的末尾添加一个点:

scp -rp src/. [email protected]:dest/

real的答案是使用rsync。

68
Matt Simmons

您可以尝试rsync。它更适合此工作:

rsync -av src/user @ server:dest /

(其手册页值得一读。)

25
cstamas

不要在源目录后加斜杠。您的代码如下所示:

scp -rp src [email protected]:dest/

这将在远程计算机上的“目标”下创建目录“ src”,其中包含所有隐藏文件。它可能不是您想要的,但是它将在src中复制隐藏的文件。

9
kbyrd

以下将解决问题,此问题已在我们的持续集成环境中进行了全面测试

scp -rp src/. [email protected]:dest/
example scp -rp /usr/src/code/. [email protected]:/usr/dest/code/

希望能帮助到你

3
stevensagaar

要仅复制隐藏文件,请使用此命令

scp -rp /path_to_copy_hidden/.[!.]* [email protected]:/path_to_paste/

实际的游戏是/.[!.]*标记,指的是以.(隐藏)开头的文件

1
Shahzaib Hayat Khan

由于scp支持正则表达式,因此可以很好地解决这个问题:

scp -rp src/(*|.*) [email protected]:dest/

0
donmutti

分布式修订控制处理隐藏文件

由于CVE-2018-20685漏洞,/.技巧 无法再使用scp。但是,像git或Hg Mecurial这样的分布式修订控制将像其他文件一样处理隐藏文件。这是我最喜欢的命令- 汞汞

server:$ Sudo apt install Mercurial
client:$ Sudo apt install Mercurial
client:$ hg init src
client:$ cd src/
client:$ hg addr
client:$ hg com -m "first commit"
client:$ cd
client:$ hg clone src ssh://[email protected]/dest/

随后的更改将需要使用client:$ hg com -m "commit message",然后使用client:$ hg Push命令。从此 Hg Mercurial速查表 了解更多有关推动变更的信息。

0
Serge Stroobandt

上面的scp解决方案都不适合我。但是,我确实发现以下内容适用于cygwin:scp -r directory/* Host:directory'*'匹配所有可见文件,并跳过不可见文件。

0
Ray Cote

如果在远程计算机上禁用了密码登录,并且唯一的登录方式是通过公共密钥,则可以使用以下方法:

$ rsync -av -s 'ssh -i /path/to/your/private/SSH/key' --progress [email protected]:/remote/source/directory/ /local/destination/directory/

它也复制隐藏文件。

还请注意,“ user1”必须具有读取这些文件的权限,例如,您不能使用此方法复制其他用户的ssh文件夹。

0
Gergely Lukacsy