从服务器到电脑传文件,在工作站和 PC 间传输文件

在工作站和 PC 间传输文件

我们经常会将我们本地的一些文件上传到工作站上,或是从工作站下载文件。这些工作用命令行可以轻松完成。

建议在传输文件之前对要传输的文件进行打包,以便有更高的传输效率。在 Linux 下可以使用 tar 工具进行打包。

$ tar -cjf archive.tar.bz2 folder1/ folder2/

上面的命令是将两个文件夹下的所有文件打包到 archive.tar.bz2 文件中,并进行一定压缩。在工作站打包数据建议使用这个命令。

Windows 用户可以使用 WinRAR 或者 Zip 进行打包。

在服务器中,相应的解包命令为

$ tar -xjf archive.tar.bz2

$ unzip archive.zip

$ unrar e archive.rar

Linux 或 Mac

使用 scp

在命令行中可以使用 scp 命令进行传输文件。这是依赖于 SSH 的一个命令,如果已经配置了 SSH 无密码

登录那么每次复制将不必输入密码。否则,每次传输文件都需要输入密码。

以下命令均在本地计算机中执行。

$ scp file username@ip_address:

$ scp file username@ip_address:Documents/

上面的第一条命令即可将 file 传输到工作站相应账号的 HOME 文件夹下,如果想要指定目录,可以直接写

相对于 HOME 文件夹的路径,例如第二条命令。

如果要使用 scp 命令复制文件夹,需要加上 -r 参数。

$ scp -r folder username@ip_address:

从服务器传输文件到本地只需将两个参数的位置调换。

$ scp username@ip_address:file .

在这里我们使用 . 来表示本地的当前路径。

使用 rsync

rsync 是强大的同步文件的命令行工具,它比 scp 更加智能。rsync 支持从本地到本地,

从本地到服务器,从服务器到本地的文件传输。使用 rsync 访问服务器依赖于 SSH 的

配置。下面的例子假定用户已经配置了 SSH 无密码登录。

传输文件

rsync 基本的传输文件命令为

# 下载文件

rsync [OPTION...] [USER@]HOST:SRC... [DEST]

# 上传文件

rsync [OPTION...] SRC... [USER@]HOST:DEST

其中 SRC 表示来源的路径,DEST 表示目标路径。由于要访问服务器,因此当来源或

目标不是本地时,需要指定服务器的用户和主机名。用户和主机名的指定可以直接使用

SSH 的 .ssh/config 表示的格式。

因此上传可用

# 假设已经配好了 SSH config,server 表示的主机有意义

rsync -avz folder server:

# 如果没有配置 SSH config

rsync -avz folder user@server_ip:

其中的三个选项,a 表示归档模式,在这个模式下传输将递归地进行,并保留文件的

权限信息;v 表示将中间信息输出;z 表示在传输过程中进行压缩来减少传输量。

下载只需要将 SRC 和 DEST 的地位对换。

rsync 的优势在于,每次在传输之前会对文件进行比较,只会传输那些真正改变的文件,

在多数情况下会极大减小传输量。下面是一个例子。

[liuhy@laptop ~]$ ls test/

total 0 # test 文件夹只有三个文件

-rw-rw-r--. 1 liuhy liuhy 0 Jul 1 15:25 1.txt

-rw-rw-r--. 1 liuhy liuhy 0 Jul 1 15:25 2.txt

-rw-rw-r--. 1 liuhy liuhy 0 Jul 1 15:25 3.txt

# 使用 rsync 上传

[liuhy@laptop ~]$ rsync -avz test server:

sending incremental file list

test/

test/1.txt

test/2.txt

test/3.txt

sent 213 bytes received 80 bytes 195.33 bytes/sec

total size is 0 speedup is 0.00

# 创建新文件 4.txt

[liuhy@laptop ~]$ echo "hello world" >> test/4.txt

[liuhy@laptop ~]$ rsync -avz test server:

sending incremental file list

test/

test/4.txt #

sent 184 bytes received 42 bytes 150.67 bytes/sec

total size is 12 speedup is 0.05

同步时删除

使用 rsync 上传文件时,如果 SRC 的文件比 DEST 的文件要少时,rsync 默认不会去

处理 DEST 多出来的文件。如果要实现真的的完全同步,即删除 DEST 多出来的文件,需要

给 rsync 加上 --delete 选项。

接着上面的例子,在本地删除 1.txt,并告诉服务器也要删除这个文件

[liuhy@laptop ~]$ rm test/1.txt # 删除 1.txt

[liuhy@laptop ~]$ rsync -avz --delete test server:

sending incremental file list

test/

deleting test/1.txt #

sent 113 bytes received 37 bytes 100.00 bytes/sec

total size is 12 speedup is 0.08

断点续传

rsync 的同步算法只能针对整个的文件。默认情况下,如果文件传输不完整,rsync 会

扔掉这些文件,在下次传输的时候重新处理。当要传输单个大文件时,由于网络等多方面

原因,传输很难一次完成,这时候就需要断点续传功能。

# 使用 rsync 指定 --partial 选项来保留传输未完成的文件

[liuhy@laptop Downloads]$ rsync -avz --partial --progress gcc-7.3.0.tar.xz server:

sending incremental file list

gcc-7.3.0.tar.xz

36,208,640 57% 11.43MB/s 0:00:02 ^CKilled by signal 2.

# ^ 使用 Ctrl+C 强制终止

rsync error: unexplained error (code 255) at rsync.c(638) [sender=3.1.2]

# 指定 --append 选项来传输未完成的文件

[liuhy@laptop Downloads]$ rsync -avz --append --progress gcc-7.3.0.tar.xz server:

sending incremental file list

gcc-7.3.0.tar.xz

62,462,388 100% 11.71MB/s 0:00:02 (xfr#1, to-chk=0/1)

sent 26,481,503 bytes received 34 bytes 7,566,153.43 bytes/sec

total size is 62,462,388 speedup is 2.36

# ^ 注意这是从 57% 开始传的,sent 和 total size 不一样。

将工作站目录挂载到本地

如果不想使用 scp 命令,可以利用 sshfs 将服务器的 HOME 目录挂载到本地。这并不会消耗你本地的存储空间。

首先,使用如下命令安装 sshfs 应用

$ sudo apt install sshfs

其中 apt 是 ubuntu/debian 的安装包管理器,如果你在使用其它 Linux 发行版,请使用相应的安装包管理器进行安装。

安装完毕后,在你喜欢的本地目录下建立挂载点,为了方便,可以选择个人的本地 HOME 文件夹。

$ mkdir workstation

其中 workstation 为挂载点的名称,可以随意填写。

最后,将服务器端的 HOME 文件夹挂载到本地

$ sshfs username@ip_address: workstation

其中 username 为你用户名,ip_address为服务器的地址。上面命令的最后一个 workstation 表示将服务器文件夹挂载到刚创建的挂载点 workstation 上。使用时请将其替换成你实际创建挂载点的路径。

挂载成功后,你可以从挂载点处(在本说明中为本地 HOME 文件夹下的 workstation 目录)直接访问你的服务器远端的目录,非常方便。

当你不需要使用服务器文件时,需要将服务器挂载目录卸载。命令为

$ fusermount -u workstation

其中 workstation 为你事先创建好的挂载点。卸载前请确保本地没有程序在使用远程目录下的文件。

Windows

使用 WinSCP 图形客户端。下载地址

在下图中分别输入服务器IP,用户名,密码。

d70d8146ec0b5dc21d6dcaa0e55b26f5.png

在 WinSCP 中同样可以配置 SSH 无密码登录,点击“高级”即可进行类似设置(需要 ppk 文件:生成方法)。

进入传输面板进行操作即可。

Page generated 2018-09-14 19:51:36 CST, by jemdoc.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值