Linux 温习(七): 文件传输

2023-02-17 17:14:42 浏览数 (3)

wget 下载文件

wget可以使我们直接从终端控制台下载文件,只需要给出文件的 HTTP 或 FTP 地址。

安装

代码语言:javascript复制
sudo yum install wget

命令格式

代码语言:javascript复制
wget [参数] [URL地址]

下载文件

代码语言:javascript复制
wget http://c69p.com

如果是由于网络的原因下载失败,wget 会不断地尝试,直到整个文件下载完毕。

继续中断的下载

要继续一个中断的下载,只要在相同的下载命令中加入 -c 参数 wget -c xxx,c 是英语 continue 的缩写,表示“继续”。

wget 的一个优点是会显示下载的进度

网间拷贝 SCP

cp 是英语 copy 的缩写,表示”拷贝”,scp 是 Secure CoPy 的缩写,表示“安全拷贝”,scp 可以使我们通过网络,把文件从一台电脑拷贝到另一台,scp 是基于 SSH ( Secure SHell )的原理来运作的,SSH 会在两台通过网络连接的电脑之间创建一条安全通信的管道,scp就利用这条管道安全地拷贝文件。

命令格式

代码语言:javascript复制
scp source_file destination_file
  • source_file 表示源文件,就是被拷贝的文
  • destination_file 表示目标文件,就是拷贝产生的文件
  • 这两个文件都可以用如下方式来表示 user@ip:file_name
  • user 是登录名,ip 是域名(google.com)或 ip 地址(216.58.206.238)

file_name是文件路径。不要忘了中间的 @ 号和冒号 (∶)

SCP 修改端口

scp命令的默认端口号是22,和SSH一样,可以修改端口号,用 参数(p 是 port 的缩写,表示“端口”)。

代码语言:javascript复制
scp -P 7821 root@192.168.1.5:/root/file.txt . 

例子

从自己电脑拷贝文件到另一台电脑

代码语言:javascript复制
# 表示把我的电脑中当前文件夹下的 file.txt 文件拷贝到远程电脑
scp file.txt root@192.168.1.5:/root

从另一台电脑拷贝文件到自己电脑

代码语言:javascript复制
# 把 file.txt 拷贝到我的电脑中当前文件夹下,并改名
scp root@192.168.1.5:/root/file.txt file_change_name.txt

ftp & sftp 传输文件

FTP是 File Transfer Protocol 的缩写,表示“文件传输协议”,FTP协议已经有些年纪了,1985年诞生,FTP 现在仍然是传输文件的最常用协议。

使用FTP主要分为两种情况:

  1. 从公共的 FTP 服务器下载文件
  2. 从私有的 FTP 服务器上传或下载文件

安装 ftp命令

代码语言:javascript复制
sudo yum install ftp

连接到FTP服务器

代码语言:javascript复制
ftp -p ftp.fr.debian.org

-p 参数,p 是 passive 的缩写,表示“被动的” passive 是 FTP 的一种模式

对于公共的FTP服务器,用户名( Name )一般都填写 anonymous

在 FTP 服务器中操作

  • ls :列出当前目录的文件
  • pwd :显示当前目录的路径
  • cd∶转换目录

用 FTP 进行文件传输

如果你想上传及下载文件,需要知道两个命令

  1. put :用于上传文件。put 是英语“放入”的意思
  2. get :用于下载文件。get 是英语“获得”的意思

其他的 FTP 命令

man ftp 来查看ftp的命令手册,比如,删除文件不是用 rm 命令,而是 delete 命令。

与 FTP 服务器断开连接

要从 FTP 服务器断开连接,你可以用 Ctrl D 组合键,也可以用 bye, exitquit 命令,效果是一样的

sftp:安全加密的 ftp

ftp 命令虽然方便,但是有一个致命缺点:不安全,数据不是加密传输的。sftp 是 Secure FTP 的缩写。表示“安全的FTP” sftp 也是基于 SSH 的,所以登录需要用户名和密码。

用法

代码语言:javascript复制
sftp user@ip

sftp 的默认端口号是 22,和 SSH 一样,可以修改端口号,用 -oPort 参数

代码语言:javascript复制
sftp -oPort 3592 chendasheng@192.168.1.67

rsync:同步备份

rsync 是 remote synchronize 的缩写,remote 表示“远程”,synchronize 表示“同步”因此 rsync 命令主要用于“远程同步文件”。rsync 是最常用于“增量备份”的命令了,rsync 就好像更智能的scp命令 。

指在一次全备份或上一次增量备份后。以后每次的备份只需备份与前一次相比增加或者被修改的文件

安装

代码语言:javascript复制
sudo yum install rsync

rsync 备份到同一台电脑的其他目录

代码语言:javascript复制
# 将lmages目录下的所有文件备份到backups目录下
rsync -arv Images/ backups/

-arv 参数

  • -a:保留文件的所有信息,包括权限,修改日期,等等。a 是 archive 的缩写,是“归档”的意思
  • -r:递归调用。表示子目录的所有文件也都包括,r 是 reqursive 的缩写,是“递归的”的意思
  • -v:冗余模式,输入详细操作信息,v 是 verbose 的缩写,是“冗余的”的意思。

删除文件

默认地,rsync 在同步时并不会删除目标目录的文件,例如,你的源目录(被同步目录)中删除了一个文件,但是用 rsync 同步时,它并不会删除同步目录中的相同文件

如果要使rsync 也同步删除操作。那么可以这么做

代码语言:javascript复制
rsync -arv --delete Images/ backups/

rsync 备份到另一台电脑的目录

代码语言:javascript复制
rsync -arv --delete Images/ chendasheng@89.231.45.67:backups/

更多参数,可以用 man rsync 学习

强大的 rsync

你可以自己配置 rsync,使得它从指定目录(可以是多个目录)备份到指定的 ip 地址的且录下,而且可以指定哪些类型文件是要备份的,哪些类型不要备份,然后把这一长串命令统一用 Shell 脚本来写成一个文件(例如取名叫 backup ),使之可执行(用 chmod x 命令),再把这个文件的路径添加到 PATH 环境变量中

总结

  • wget 命令可以下载文件
  • 为了将文件从一台电脑拷贝到另一台电脑,可以使用scp命令,它使用 SSH 协议,因此传输是加密的,非常安全
  • 可以用 ftp 命令来连接到一个 FTP 服务器,上传及下载文件。
  • sftp 和 ftp 命令类似,但是它用了 SSH 协议,所以传输的信息是加密的
  • rsync 命令可以同步同一台电脑或两台不同电脑上的两个文件(夹)的内容,rsync 命令来备份文件特别方便。

1 人点赞