5个Linux文件传输命令

IT技术:文件传输命令详解:scp、rsync、sftp、wget与curl
本文介绍了在IT领域中常用的五种文件传输命令:scp(安全复制)、rsync(同步文件)、sftp(安全文件传输)、wget(从网上检索)和curl(传输数据)。这些命令通过SSH加密传输,适用于远程文件操作和网络数据获取。

文件传输命令允许你通过网络在系统间移动文件。这对于将文件复制到远程服务器或从互联网下载内容非常有用。

1. scp – 在主机间安全复制文件

scp (安全复制)命令通过 SSH 连接在主机间复制文件。所有数据传输都经过加密,以确保安全。

scp 语法可将文件从源路径复制到定义为 user@host 的目的地:

scp source user@host:destination

例子:

scp image.jpg user@server:/uploads/

这样就能以 user 身份将 image.jpg 复制到 server 上的 /uploads 文件夹。

scp 的工作原理与 cp 命令类似,但用于远程文件传输。它利用 SSH(Secure Shell)进行数据传输,提供加密功能,确保不会在网络上泄露密码等敏感数据。身份验证通常使用 SSH 密钥,但也可以使用密码。文件既可以复制到远程主机,也可以从远程主机复制。

2. rsync – 在主机间同步文件

rsync 工具可在两个位置之间同步文件,同时使用 delta 编码尽量减少数据传输。这使得同步大型目录树的速度更快。

rsync 语法同步源文件到目标文件:

rsync [options] source destination

例子:

rsync -ahv ~/documents user@server:/backups/

上述示例命令将 documents 文件夹递归同步到 server:/backups/,并显示冗长的、人类可读的输出。

有用的 rsync 选项:

  • a – 归档模式递归同步并保留权限、时间等。
  • h – 人类可读输出。
  • v – 冗余输出。

rsync 是将文件和文件夹同步到远程系统并保持分散备份和安全的理想工具。

3. sftp – 安全文件传输程序

sftp 程序通过 SSH 提供交互式文件传输,与普通 FTP 类似,但已加密。它可以在远程系统之间传输文件。

sftp 连接到主机,然后接受以下命令:

sftp user@host
get remotefile localfile (复制远程文件到本地,此时remotefile可以是文件,也可以是文件夹)
put localfile remotefile (把本地文件复制到远程,此时localfile如果是文件夹,前面要加-r)

这样就能从服务器上获取 remotefile ,并将 localfile 复制到远程主机上。

sftp 有一个交互式 shell,用于浏览远程文件系统、传输文件和目录以及管理权限和属性。

4. wget – 从网上检索文件

wget(World Wide Web get)是从互联网检索内容的实用工具。它拥有最大的flags之一。

有用的 wget 选项:

  • c – 恢复中断的下载,如果下载过程中出现连接中断或下载被取消,你可以使用 -c 选项重新启动下载,它会尝试从上次中断的地方继续下载。
  • r – 递归下载,即下载指定 URL 下的所有链接和资源。它非常有用,特别是当你需要下载一个整个网站或某个目录中的文件时。
  • O – 保存到特定文件名,通过指定 -O 选项和文件名,你可以控制下载文件的保存位置和名称。

wget 是编写自动下载脚本和镜像网站的理想工具。

以下是您如何从GitHub获取一个Python文件:

wget https://example.com/cookies.py
#保存为链接尾部名称cookies.py

wget -O myfile.py https://example.com/cookies.py
#保存为myfile.py

5. curl – 从服务器传输数据或向服务器传输数据

curl 命令可使用支持的协议与网络服务器之间传输数据。它支持多种常用协议,包括 HTTP、HTTPS、FTP、FTPS、SCP、SFTP、SMTP、POP3、IMAP、Telnet 和 DICT。通过 curl,我们可以发送请求,获取网页内容、下载文件,以及执行其他网络操作。

例子:

curl -o example.html https://example.com
#该命令会将 https://example.com 的响应保存为名为 example.html 的文件。

curl -L https://example.com
#该命令会自动跟踪 https://example.com 的重定向,并获取最终的响应内容。

上述命令从 HTTPS URL 获取数据并输出。

有用的 curl 选项:

  • o – 将输出写入文件。
  • I – 仅显示响应头。
  • L – 跟踪重定向。

curl 旨在以编程方式跨网络传输数据。

ps:以上只做粗略介绍,撬开入门的第一块砖,更深入的知识请自行查资料了解。

<think>我们正在讨论如何在AutoDL服务器上移动文件。根据提供的引用,AutoDL服务器有特定的文件夹结构,其中只有特定的文件夹(如/root/autodl-tmp,/root/autodl-nas,/root/autodl-pub,/root/autodl-fs)不占用系统盘空间。因此,在移动文件时,我们需要确保将文件移动到这些文件夹中,以避免占用系统盘空间。 在Linux系统中,移动文件通常使用`mv`命令。`mv`命令的基本语法是: ``` mv [选项] 源文件或目录 目标文件或目录 ``` 例如,如果要将一个名为`example.txt`的文件从当前目录移动到`/root/autodl-fs`目录,可以使用: ``` mv example.txt /root/autodl-fs/ ``` 如果要将整个目录(包括其内容)移动到另一个位置,例如将`my_directory`移动到`/root/autodl-tmp`,可以使用: ``` mv my_directory /root/autodl-tmp/ ``` 注意事项: 1. 移动文件或目录需要确保你有足够的权限。在AutoDL服务器上,你通常以root用户操作,所以权限应该不是问题。 2. 移动文件时,如果目标位置已经存在同名文件,`mv`命令会覆盖它(除非使用`-i`选项进行交互式确认)。因此,在覆盖重要文件前要小心。 3. 如果目标位置在同一个文件系统内,移动操作是即时的(只是更改文件路径的元数据)。如果目标位置在不同的文件系统(如从系统盘移动到数据盘),则实际上会复制文件然后删除原文件,这可能需要时间。 在AutoDL服务器上,系统盘空间有限,所以我们应该将大文件或数据集移动到非系统盘的文件夹(如autodl-fs, autodl-tmp等)。根据引用[1],只有特定的几个文件夹不占用系统盘,因此移动文件到这些文件夹是释放系统盘空间的有效方法。 另外,引用[4]提到了使用`unzip`命令解压文件到目标文件夹,这也可以作为移动文件的一个参考(虽然解压和移动不同,但目标位置的选择原则相同)。 因此,在AutoDL服务器上移动文件的步骤可以总结为: 1. 确定要移动的文件或目录的当前路径。 2. 确定目标路径(必须是那些不占用系统盘的文件夹,如`/root/autodl-fs`等)。 3. 使用`mv`命令进行移动。 例如,假设我们有一个数据集文件`dataset.zip`存放在`/root`(系统盘)下,我们想把它移动到`/root/autodl-fs`(不占用系统盘): ``` mv /root/dataset.zip /root/autodl-fs/ ``` 这样,文件就被移动到了非系统盘的目录,从而释放了系统盘空间。 如果用户需要移动的文件较多,可以使用通配符。例如,移动所有以`.log`结尾的文件到`/root/autodl-tmp`: ``` mv /root/*.log /root/autodl-tmp/ ``` 另外,如果用户需要重命名文件,也可以使用`mv`命令。例如,将`oldname.txt`重命名为`newname.txt`(在同一个目录下): ``` mv oldname.txt newname.txt ``` 注意:重命名操作不会改变文件所在的磁盘位置,所以如果原文件在系统盘上,重命名后仍然在系统盘上。 最后,提醒用户,在移动大文件或目录前,可以使用`du -sh`命令(如引用[1]所示)来查看文件或目录的大小,以避免移动过程中出现磁盘空间不足的问题。 例如,查看`/root`目录下各个文件/文件夹的大小: ``` du -sh /root/* ``` 或者查看特定文件的大小: ``` du -sh /root/dataset.zip ``` 这样可以帮助用户合理规划文件的移动。</think>### 如何在 AutoDL 服务器上移动文件 在 AutoDL 服务器上移动文件需要使用 Linux 命令操作,核心方法是使用 `mv` 命令。以下是详细步骤和注意事项: #### 📌 基本移动命令 ```bash # 移动单个文件 mv /源路径/文件名 /目标路径/ # 移动整个目录 mv /源目录 /目标路径/ ``` **示例**: ```bash # 将文件从系统盘移动到数据盘 mv /root/train_data.zip /root/autodl-fs/ # 重命名并移动(移动时自动重命名) mv /root/old_name.txt /root/autodl-nas/new_name.txt ``` #### ⚠️ 关键注意事项 1. **磁盘空间限制**: - 只有特定目录不占用系统盘空间: - `/root/autodl-tmp`(临时缓存) - `/root/autodl-nas`(持久存储) - `/root/autodl-pub`(共享存储) - `/root/autodl-fs`(文件系统)[^1] - **系统盘(如 `/root`)空间有限,大文件需移到上述目录** 2. **移动前检查空间**: ```bash # 查看目录大小 du -sh /目标路径 ``` 确保目标位置有足够空间[^1] 3. **跨磁盘移动**: - 系统盘 → 数据盘:实际是**复制+删除**操作 - 数据盘之间移动:瞬时完成(同磁盘分区) #### 🔧 实用技巧 1. **批量移动文件**: ```bash # 移动所有 .jpg 文件 mv /root/*.jpg /root/autodl-fs/images/ ``` 2. **移动时保留权限**: ```bash mv --preserve=all /源文件 /目标路径 ``` 3. **解压时直接移动到目标位置**(参考引用[4]): ```bash unzip /root/dataset.zip -d /root/autodl-fs/ ``` #### 💻 操作示例 假设需要将训练数据集从系统盘移动到持久存储: ```bash # 1. 检查原始文件位置 ls -l /root/yolo_dataset # 2. 查看目标目录剩余空间 du -sh /root/autodl-fs # 3. 执行移动(耗时操作) mv /root/yolo_dataset /root/autodl-fs/ # 4. 验证移动结果 ls /root/autodl-fs/yolo_dataset ``` > **重要提示**:操作前务必通过 `df -h` 确认磁盘挂载点,避免误操作导致系统盘爆满[^1][^3]。 --- ### 相关问题 1. AutoDL 服务器系统盘满了如何快速清理? 2. 如何在 AutoDL 上安全删除大文件释放空间? 3. AutoDL 不同存储目录(autodl-tmp/autodl-fs)有何区别? 4. 使用 `rsync` 命令在 AutoDL 服务器间同步文件的最佳实践? [^1]:【教程】Autodl服务器系统盘清理。目前已知只有/root/autodl-tmp,/root/autodl-nas,/root/autodl-pub,/root/autodl-fs几个文件夹不占用系统盘,所以直接退回到/路径排查所有的文件夹。使用的命令是AutoDL帮助文档当中提到的 du -sh xxx [^3]:AutoDL云服务器上使用yolov8训练数据集。分割好后删去images和labels两个文件夹中的空文件夹,都只保留train和val两个文件夹。然后将数据集放到项目的ultralytics\ultralytics\cfg\datasets路径下。 [^4]:在autodl中用unzip解压文件到目标文件夹。这样,unzip 会先找到 /root/autodl-fs/archiveLBP.zip 这个压缩文件,然后将其内容解压到 /root/autodl-fs/archiveLBP 目录中。如果 /root/autodl-fs/archiveLBP 目录不存在,unzip 命令将会为你创建它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值