我正在使用Linux(centos)计算机,已经使用ssh连接到另一个系统。现在我的问题是如何将文件从一个系统复制到另一个系统?

假设在我的环境中,我有两个系统,例如System ASystem B。我正在使用System A机器,而其他一些正在使用System B机器。

如何将文件从System B复制到System A
,然后将文件从System A复制到System B吗?

评论

我发现scp通常是一件麻烦事。如果可以满足您的需求,请尝试一下linuxjournal.com/article/8904,它将本地安装远程文件系统。

@Alan我想你的意思是“麻烦”?坎伯·斯通是一张魔术牌
有点相关:使用ssh在远程计算机上对本地dir /进行加密存档:tar -c dir / | gzip | gpg -c | ssh user @ remote'dd of = dir.tar.gz.gpg'

如果您可以访问远程服务器的ftp,我们也可以使用wget像$ wget -r --level = 9 --no-parent --reject“ index.html *” ftp:// :<密码> @ <计算机名称> / path / to Reference1 Reference2

不重复,链接的问题专门要求不要使用scp;因为那一个scp是很好的并且是最简单的答案方式,所以mods请删除重复的标志,就像有人会去另一个一样,最有用的答案将会被遗漏。

#1 楼

语法:

scp <source> <destination>


要在登录B时将文件从A复制到B

scp /path/to/file username@a:/path/to/destination


到登录B时将文件从A复制到A

scp username@b:/path/to/file /path/to/destination


评论


需要说明的是,在使用ssh登录到远程服务器(系统B)时,通常不使用scp将文件复制到本地计算机(系统A)或从本地计算机(系统A)复制文件。 scp会将您登录到远程服务器,复制文件,然后在一个过程中再次注销您,因此只需从本地计算机上的Shell中运行它即可。话虽如此,如果您通过SSH登录到系统B,并且想在系统B和系统C之间复制文件,则可以使用scp。

–加里特·奥尔布赖特(Garrett Albright)
13年12月24日在16:40

@DopeGhoti。是的,您不能在两台远程计算机之间移动文件。源或目标必须是本地文件。但是,如果使用ssh登录到远程计算机,则可以在该计算机的命令行上的两台远程计算机之间复制文件。

–Gee-Bee
2014年8月8日19:48

另外,要记住的重要一件事是,您只能在目标计算机上拥有权限的站点上文件夹。如果您尝试将其复制到目标用户没有权限的目标位置,请首先将文件复制到用户的主目录或子目录,然后ssh到目标计算机中,并sudo将其移至最终目标位置

– shaveenk
15年4月25日在20:30

记住-r(递归)和-p(保留系统元数据):scp -rp <文件1> <文件2>

– Rutrus
15年7月1日在7:23

是的,使用-P在远程主机上指定TCP端口。每次都会抓住我,因为ssh使用-p。

–DopeGhoti
16年4月28日在18:22



#2 楼

如果需要替代方法。

安装sshfs。如果您使用ubuntu / debian:

sudo apt-get install sshfs


,或者,如果您使用centos / rhel:

sudo yum install fuse-sshfs


或者,在macOS中

brew install sshfs


创建一个空目录

mkdir /home/user/testdir


“链接”或“装载”两个目录

sshfs user@server.com:/remote/dir /home/user/testdir


“取消链接”目录

fusermount -u /home/user/testdir


在BSD和macOS上,卸载文件系统:

umount mountpoint




diskutil unmount mountpoint


有关更多信息,请参见linuxjournal.com libfuse / sshfs

评论


该问题特别指出所涉及的操作系统是CentOS。不是Debian衍生的。 apt-get是一种Debian主义;正确的软件包管理器应该是yum,或者对于真正古老的CentOS版本,应该是up2date或rpm。

–DopeGhoti
13年12月24日在21:30

+1这个问题的答案可能与上下文无关,但它仍然对我有帮助,就我所知,其他人也对我有帮助。

– osirisgothra
2014年7月23日15:27



不相关,但这是一百万美元的答案xD

–拉米·阿尔·祖瓦里(Ramy Al Zuhouri)
2015年5月15日下午16:55

如果我理解正确,则可以访问远程文件,但是不复制它们?

–ToolmakerSteve
16-4-20的2:46

@ToolmakerSteve完全正确:它创建了一个伪目录(装载),因此您可以使用所有喜欢的工具来复制或移动内容:cp,mv,rm,rsync,unison ... scp命令只会是能够复制文件。

–伊万
16-10-19在5:38



#3 楼

有时您需要看上tar:

tar -C / -cf - \
  opt/widget etc/widget etc/cron.d/widget etc/init.d/widget \
  --exclude=opt/widget/local.conf | 
  ssh otherhost tar -C / -xvf -


评论


创造力?这就是我们过去共享磁带驱动器的方式。 :)

–丹·加思韦特(Dan Garthwaite)
2015年12月8日在15:01

您能告诉我们这是什么吗?例如,我不知道“ cron”与复制文件有什么关系!

–aliqandil
16-10-28在15:00

@aliqandil opt / widget etc / widget etc / cron.d / widget etc / init.d / widget是要包含在tar存档中的单个文件。重点是说明为什么有时需要花哨。这一系列命令通过ssh连接流式传输tar存档,并在另一端取消存档。因此,从来没有将tar存档写入磁盘。我有时会用它来挑选要复制的命令。

–丹·加思韦特(Dan Garthwaite)
16-10-28在18:51



!!我教的第一个'/'是源路径! (什么?)所以这是一个愚蠢的问题!谢谢。 :)

–aliqandil
16-10-28在21:01



Tar将chdir更改为“ /”,因此以下所有路径均相对于“ /”。

–丹·加思韦特(Dan Garthwaite)
16-10-29在14:27

#4 楼

如果要使两个系统上的文件保持同步,请查看rsync程序:

(请参见此处的教程)

评论


这是一个真正的专业工具。

–雅各
19年11月22日在10:22

#5 楼

如果您具有常见的操作系统之一,则可以安装与gzip相同的Pigz,不同之处在于它将使用多个内核并且可以通过快速网络更快地运行。我的命令有点不同。
tar cf - -C /opt -S <dir> | pigz | ssh <target> "pigz -d | tar xf - -C /opt -S"

或获取文件的另一种方法
ssh <target> "tar cf - -C /opt -S <dir> | pigz" | pigz -d | tar xf - -C /opt -S

或使用
ssh <target> "tar cf - -C / --one-file-system -S --numeric-owner . | pigz" > root.tgz

备份根文​​件

评论


而且您可以使用ssh -J来检查代理服务器

– Pablo A
9月18日20:59

#6 楼

通过SSH控制的NVIDIA Jetson计算机使用的一种更简单的方法是使用SFTP(SSH文件传输协议)进行连接。
我想将文件UFO_blueprint.odt从NASA的远程服务器中移出并移入我的文档中。 >

cd保存文件的位置

$ cd Documents


连接

$ sftp sammy@your_server_ip_or_remote_hostname


转到包含要传输文件的目录。

$ cd NASA/secret_files/


传输

$ get UFO_blueprint.odt

要获取完整的目录,而是使用
$ get -r secret_files/


评论


使用put命令上传文件

–Lu55
11月18日21:45

#7 楼

Unix / Linux使用以下代码在安全外壳上递归复制文件和文件夹:
scp -r <host@machine_name:from_remote_directory_path> <to_local_directory_path>

完整的示例如下:
scp -r sizwe@hprobook:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects

请注意没有DNS服务器来解析主机名,请改用您的IP地址。上面的示例可能像这样
scp -r 192.168.43.167:./home/sizwe/PycharmProjects ./home/immaculate/OtherPycharmProjects