Skip to main content

使用SFTP管理文件系统

一、Linux 目录结构​

目录主要作用
/根目录,一切路径的起点
/bin基础命令(ls、cp、mv),多数系统已软链到 /usr/bin
/sbin系统管理命令(fdisk、reboot)
/etc所有配置文件,如 /etc/nginx/、/etc/ssh/sshd_config
/home普通用户家目录,如 /home/deploy
/rootroot 用户的家目录
/var经常变化的数据:日志 /var/log、网站 /var/www、缓存 /var/cache
/usr程序与库,/usr/bin 命令、/usr/local 手动安装的软件
/opt第三方独立软件(如 /opt/google)
/tmp临时文件,重启后可能被清空
/dev设备文件(/dev/sda、/dev/null)
/proc内核与进程的虚拟文件(/proc/cpuinfo)
/sys硬件与内核参数
/mnt、/media挂载点
/boot内核与启动文件
/lib共享库文件

工作里最常打交道的几个位置:

/etc/nginx/nginx.conf       ## 配置
/var/log/nginx/access.log ## 日志
/var/www/html ## 网站根目录
/usr/local/bin ## 自己装的命令
/tmp ## 临时放东西

二、路径​

绝对路径:以 / 开头,从根目录算起,任何位置执行结果都一样。

/etc/nginx/nginx.conf
/var/log

相对路径:不以 / 开头,相对当前目录。

./deploy.sh          ## 当前目录下的 deploy.sh
../conf/app.conf ## 上一级目录下的 conf/app.conf
logs/app.log ## 当前目录下 logs 里的 app.log

特殊写法:

写法含义
.当前目录
..上一级目录
~当前用户家目录(root 是 /root,普通用户是 /home/xxx)
~deploy指定用户的家目录
-上一次所在的目录(cd -)

切换目录:

pwd                 ## 显示当前完整路径
cd /var/www/html ## 进入指定目录
cd .. ## 上一级
cd ../.. ## 上两级
cd ~ ## 回家目录
cd - ## 回到上一个目录
cd ## 不带参数也是回家目录

cd 时按 Tab 可以补全目录名,路径很长时非常有用;连按两次 Tab 会列出候选。

三、用 SFTP 管理文件​

SFTP 基于 SSH,登录后就能在本地和服务器之间传文件,不用另外装服务。

连接​

sftp user@host              ## 默认 22 端口
sftp -P 2222 user@host ## 指定端口,注意是大写 -P(ssh 是小写 -p)

连接后进入 sftp> 提示符,命令分两类:远程命令操作服务器,本地命令前面加 l 操作自己的电脑。

常用命令​

远程(服务器)本地(自己的电脑)作用
pwdlpwd显示当前目录
ls、ls -llls列出文件
cd /var/www/htmllcd D:/upload切换目录
mkdir demolmkdir demo创建目录
rmdir demo—删除空目录
rm a.txt—删除文件
rename a.txt b.txt—重命名
get app.log—下载单个文件
put index.html—上传单个文件
get -r logs—递归下载目录(较新版本支持)
mget *.log—批量下载
mput *.html—批量上传
!ls—临时执行本地命令(Windows 本地用 !dir)
bye / exit—退出

示例:上传一个页面​

sftp -P 2222 deploy@192.168.1.10
sftp> lcd D:/site
sftp> cd /var/www/html
sftp> put index.html
sftp> ls -l
sftp> bye

示例:下载日志​

sftp deploy@192.168.1.10
sftp> lcd D:/logs
sftp> cd /var/log/nginx
sftp> mget *.log
sftp> bye

图形化工具同理:Xftp、WinSCP、FileZilla 连上后左右两栏就是本地和远程,直接拖拽即可。上传完成后如需让服务能读写,记得检查属主和权限(见第 4 篇)。