sftp 是一个与远程主机交换文件的命令,可以上传或下载文件。
连接远程主机
命令形式为:
sftp remoteuser@remotehost
,登录到远程主机,并切换到 remoteuser 用户的家目录sftp remoteuser@remotehost:remotedir
,登录到远程主机,并切换到 remotedir 目录
1
2
3
4
5
6
7
8
9
uphie@node1:~/test$ sftp uphie@node2
The authenticity of host 'node2 (10.211.55.13)' can't be established.
ED25519 key fingerprint is SHA256:R7An8Gx/Z0virTgzcFM2uGVloTZKrMQwWKZ2BPrPhq0.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'node2' (ED25519) to the list of known hosts.
uphie@node2's password:
Connected to node2.
sftp>
登录到远程主机指定目录:
1
2
3
4
5
6
uphie@node1:~/test$ sftp uphie@node2:/root
uphie@node2's password:
Connected to node2.
Changing to: /root
sftp> pwd
Remote working directory: /root
操作
连接好后,查看本地文件和远程文件的命令有的会稍有区别,本地文件操作需要在相应命令前添加 l
,如 pwd
要改用 lpwd
。
查看当前本地目录
1
2
sftp> lpwd
Local working directory: /home/uphie/test
查看当前远程目录
1
2
sftp> pwd
Remote working directory: /home/uphie
查看远程文件
命令形式:
ls remotedir
,查看远程目录ls remotefile
,查看远程文件
可使用命令选项。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sftp> ls -alh
drwxr-x--- ? 1000 1000 4.0K Mar 16 13:38 .
drwxr-xr-x ? 0 0 4.0K Feb 7 00:42 ..
-rw------- ? 1000 1000 697B Mar 8 19:57 .bash_history
-rw-r--r-- ? 1000 1000 220B Jan 7 2022 .bash_logout
-rw-r--r-- ? 1000 1000 3.7K Jan 7 2022 .bashrc
drwx------ ? 1000 1000 4.0K Feb 7 00:43 .cache
drwxrwxr-x ? 1000 1000 4.0K Mar 3 18:12 .kube
-rw-r--r-- ? 1000 1000 807B Jan 7 2022 .profile
drwx------ ? 1000 1000 4.0K Feb 7 00:43 .ssh
-rw-r--r-- ? 1000 1000 0B Feb 7 00:44 .sudo_as_admin_successful
-rw-r--r-- ? 1000 1000 101M Mar 16 13:38 kafka_2.13-3.4.0.tgz
sftp> ls -alh .kube
drwxrwxr-x ? 1000 1000 4.0K Mar 3 18:12 .kube/.
drwxr-x--- ? 1000 1000 4.0K Mar 16 13:38 .kube/..
drwxr-x--- ? 1000 1000 4.0K Mar 3 18:12 .kube/cache
-rw------- ? 1000 1000 5.5K Mar 3 18:09 .kube/config
切换远程目录
命令形式:cd remotedir
,切换到远程目录 remotedir
1
2
3
4
5
sftp> pwd
Remote working directory: /home/uphie
sftp> cd .kube
sftp> pwd
Remote working directory: /home/uphie/.kube
文件下载
命令形式:
get -r remotedir localdir
,下载远程目录 remotedir 到本地 localdir 目录下get remotefile localdir
,下载远程文件 remotefile 到本地 localdir 目录下get remotefile localfile
,下载远程文件 remotefile 到本地并重命名为 localfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
sftp> get config .
Fetching /home/uphie/.kube/config to ./config
config 100% 5636 888.5KB/s 00:00
sftp> lls -alh
total 16K
drwxrwxr-x 2 uphie uphie 4.0K Mar 16 14:39 .
drwxr-x--- 6 uphie uphie 4.0K Mar 16 14:17 ..
-rw-rw-r-- 1 uphie uphie 0 Mar 16 14:17 a.txt
-rw------- 1 uphie uphie 5.6K Mar 16 14:39 config
sftp> get config config2
Fetching /home/uphie/.kube/config to config2
config 100% 5636 1.2MB/s 00:00
sftp> lls -alh
total 24K
drwxrwxr-x 2 uphie uphie 4.0K Mar 16 15:01 .
drwxr-x--- 6 uphie uphie 4.0K Mar 16 14:17 ..
-rw-rw-r-- 1 uphie uphie 0 Mar 16 14:17 a.txt
-rw------- 1 uphie uphie 5.6K Mar 16 14:39 config
-rw------- 1 uphie uphie 5.6K Mar 16 15:01 config2
文件上传
命令形式:
put localfile remotefile
,将本地文件 localfile 上传到远程并重命名为 remotefileput -r localdir remotedir
,将本地目录 localdir 上传到远程目录 remotedir
1
2
3
4
5
6
7
8
9
sftp> put a.txt A.txt
Uploading a.txt to /home/uphie/.kube/A.txt
a.txt 100% 0 0.0KB/s 00:00
sftp> ls -alh
drwxrwxr-x ? 1000 1000 4.0K Mar 16 15:05 .
drwxr-x--- ? 1000 1000 4.0K Mar 16 13:38 ..
-rw-rw-r-- ? 1000 1000 0B Mar 16 15:05 A.txt
drwxr-x--- ? 1000 1000 4.0K Mar 3 18:12 cache
-rw------- ? 1000 1000 5.5K Mar 3 18:09 config
创建远程目录
命令形式:mkdir remotedir
不能创建多级目录。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sftp> mkdir foodir
sftp> ls -alh
drwxr-x--- ? 1000 1000 4.0K Mar 16 15:32 .
drwxr-xr-x ? 0 0 4.0K Feb 7 00:42 ..
-rw------- ? 1000 1000 697B Mar 8 19:57 .bash_history
-rw-r--r-- ? 1000 1000 220B Jan 7 2022 .bash_logout
-rw-r--r-- ? 1000 1000 3.7K Jan 7 2022 .bashrc
drwx------ ? 1000 1000 4.0K Feb 7 00:43 .cache
drwxrwxr-x ? 1000 1000 4.0K Mar 16 15:06 .kube
-rw-r--r-- ? 1000 1000 807B Jan 7 2022 .profile
drwx------ ? 1000 1000 4.0K Feb 7 00:43 .ssh
-rw-r--r-- ? 1000 1000 0B Feb 7 00:44 .sudo_as_admin_successful
drwxrwxr-x ? 1000 1000 4.0K Mar 16 15:32 foodir
-rw-r--r-- ? 1000 1000 101M Mar 16 13:38 kafka_2.13-3.4.0.tgz
删除远程文件
命令形式:rm remotefile
1
2
3
4
5
6
7
8
9
10
11
12
13
sftp> ls -alh
drwxrwxr-x ? 1000 1000 4.0K Mar 16 15:05 .
drwxr-x--- ? 1000 1000 4.0K Mar 16 13:38 ..
-rw-rw-r-- ? 1000 1000 0B Mar 16 15:05 A.txt
drwxr-x--- ? 1000 1000 4.0K Mar 3 18:12 cache
-rw------- ? 1000 1000 5.5K Mar 3 18:09 config
sftp> rm A.txt
Removing /home/uphie/.kube/A.txt
sftp> ls -alh
drwxrwxr-x ? 1000 1000 4.0K Mar 16 15:06 .
drwxr-x--- ? 1000 1000 4.0K Mar 16 13:38 ..
drwxr-x--- ? 1000 1000 4.0K Mar 3 18:12 cache
-rw------- ? 1000 1000 5.5K Mar 3 18:09 config
退出
1
sftp> quit