传递文件的需求是我们连接远程服务器后, 遇到的最普遍的需求, 你可以不使用代理转发, 可以不进行端口映射. 但是, 文件传输是我们每天 都会遇到的.

scp 拷贝操作

我也不介绍那么多复杂的操作了(主要是我也不会), 平时我就用这么两种

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
## 本地有个test.c文件, 我要拷贝到远程的/tmp目录
~ ❤ cat test.c
// #include<bits/stdc++.h>
#include <stdio.h>


int main()
{
unsigned long long x = 1ull << 31;

printf("%ld\n", x);
printf("%X\n", x);

unsigned long long y = 1ull << 32;

printf("%ld\n", y);
printf("%X\n", y);

return 0;
}

## 本机文件到远程, ali就是上一期的示例关键字
~ ❤ scp test.c ali:/tmp/
test.c 100% 253 5.5KB/s 00:00


## 远程文件到本机, 拷贝到当前目录下
~ ❤ scp ali:/tmp/pass.txt ./
pass.txt 100% 26 0.5KB/s 00:00

sshfs挂载文件夹

我们周围的挂载操作

Linux是一个神奇的系统, 当你把硬盘, 或者U盘与电脑连接后, 有些桌面环境会自动帮你 进行挂载, 其基本操作如下:

1
2
3
4
5
6
7
8
1. 创建一个空的目录.
~ ❤ mkdir mnt

2. 挂载某个分区到该目录下
~ ❤ mount /dev/sda3 mnt/

3. 使用完毕后, 进行umount操作
~ ❤ umount /dev/sda3

挂载之后, 进入到文件夹中, 可以使用普通的命令了, 例如ls, cp, mv这些.

那我们如何知道某个目录是处于挂载状态的呢?

我一般是通过df -Th检查的, 其中, 还能看到已用空间以及剩余空间.

1
2
3
4
5
6
~ ❤  df -Th
Filesystem Type Size Used Avail Use% Mounted on
dev devtmpfs 3.8G 0 3.8G 0% /dev
run tmpfs 3.8G 1.5M 3.8G 1% /run
/dev/sda2 ext4 98G 52G 42G 56% /
/dev/sda3 ext4 77G 56G 18G 76% /home

sshfs的实践

下面是我将远程的/tmp目录挂载.

1
2
3
4
5
6
7
~ ❤  sshfs ali:/tmp  mnt

## 检查挂载结果
~ ❤ df -Th
Filesystem Type Size Used Avail Use% Mounted on
...
ali:/tmp fuse.sshfs 20G 11G 8.5G 55% /home/corvo/mnt

scp 与 sshfs

其实, 有了sshfs之后, 大量的文件移动可以挂载到本地来做, 而不需要使用scp了, scp更加适合与拷贝单个文件.