-linux删除大量文件----rm,rsync

本文介绍如何利用rsync快速删除Linux系统中的大量文件,通过建立空目录、指定目标目录并设置相关参数来优化删除过程。同时,解释了与rm命令的区别及解决特殊文件删除问题的方法。
要在linux下删除海量文件,比如有数十万个文件,此时常用的rm -rf * 就会等待时间很长。这时我们可以使用rsync快速删除大量文件。
 

1、建立一个空目录

mkdir -p /tmp/rsync_blank

2、确立需要清空的目标目录

/data/web/vip/htdocs/tuan

3、使用rsync同步删除(注意目录后面的“/”),整体效率会快一个数量级的样子。

rsync --delete-before -a -H -v --progress --stats /tmp/rsync_blank//data/web/vip/htdocs/tuan/

选项说明:

–delete-before 接收者在传输之前进行删除操作

–progress 在传输时显示传输过程

-a 归档模式,表示以递归方式传输文件,并保持所有文件属性

-H 保持硬连接的文件

-v 详细输出模式

-stats 给出某些文件的传输状态

一般我们不需要显示进度,使用以下命令即可

rsync --delete-before -a -H /tmp/rsync_blank//data/web/vip/htdocs/tuan/


把某个文件删掉

1 建立空文件/tmp/empty.txt

2 rsync --delete-before -a -H -v --progress --stats /tmp/empty.txt  /opt/bre/xuanji.xiao/test/app.log 

3 这样置为空后就可以快速删掉

原理:把文件系统的目录与书籍的目录做类比,rm删除内容时,将目录的每一个条目逐个删除(unlink),需要循环重复操作很多次;rsync删除内容时,建立好新的空目录,替换掉老目录,基本没开销。


rm命令

rm删除(清除)一个或多个文件 -f 选项将强制删除文件,即使这个文件是只读的.并且可以用来避免用户输入(在非交互脚本中使用).

经常会遇到文件名开头为特殊符号的文件后目录,如.mk  @等,可以直接rm -rf 删除,或是添加转意字符\即可。

今天碰到这样一个情况……

rm将无法删除以破折号开头的文件.


  1. rm -slow_query_130103.txt.gz

  2. rm: invalid option -- s

  3. Try `rm ./-slow_query_130103.txt.gz' to remove the file `-slow_query_130103.txt.gz'.

  4. Try `rm --help' for more information.

官方在帮助文档中作了特别说明:


  1. To remove a file whose name starts with a `-', for example `-foo',
  2. use one of these commands:
  3. rm -- -foo

  4. rm ./-foo

解决这个问题的一个方法就是在要删除的文件的前边加上"./"


<think>嗯,用户问的是如何在Linux中恢复被rm -rf删除的文件或目录。首先,我得回忆一下之前学过的相关知识。rm -rf是一个非常危险的命令,它会强制递归删除文件和目录,而且不会提示确认。一旦执行,数据通常会被立即删除,但可能在某些情况下还能恢复。 首先,用户需要知道的是,当文件被删除时,系统并不会立即擦除磁盘上的数据,而是将文件占用的空间标记为可覆盖。因此,如果删除后没有进行大量的写入操作,恢复的可能性较大。这时候应该建议用户立即停止使用该磁盘,避免数据被覆盖。 接下来,可能的恢复方法有哪些呢?我记得有使用备份恢复,比如如果有定时备份或者使用版本控制系统如Git,可能可以找回文件。另外,像extundelete这样的工具可以在ext3/ext4文件系统上恢复文件。还有testdisk和photorec这样的工具,适用于不同的文件系统。此外,专业的数据恢复服务也是一个选项,但可能成本较高。 需要分步骤详细说明每个方法。比如,对于extundelete,需要安装并运行命令,指定分区和恢复目录。同时要提醒用户,恢复的成功率取决于文件系统类型和删除后的操作。 另外,生成相关问题时,应该考虑用户可能还想知道如何预防此类问题,比如使用别名替换rm命令,或者使用trash-cli这样的工具。还可能想知道数据恢复的基本原理,或者不同工具之间的比较。 最后,必须强调预防的重要性,因为数据恢复并不是百分百可靠的。用户应该养成定期备份的习惯,并谨慎使用rm -rf命令。</think>### 如何在Linux中恢复被`rm -rf`删除的文件或目录 #### 核心恢复原理 当文件被`rm -rf`删除时,操作系统仅移除文件的索引信息(如inode),而实际数据仍保留在磁盘上,直到被新数据覆盖[^1]。因此,**立即停止写入相关磁盘**是恢复的前提条件。 #### 解决方案 1. **从备份恢复** - 若系统配置了定时备份(如`rsync`、`BorgBackup`)或版本控制系统(如Git),可直接从备份中还原文件。 - 示例命令(使用`rsync`恢复): ```bash rsync -av /path/to/backup/source /path/to/target ``` 2. **使用文件恢复工具** - **extundelete**(仅限ext3/ext4文件系统): ```bash sudo extundelete /dev/sdX --restore-directory /path/to/deleted_dir ``` - **testdisk & photorec**(支持多文件系统): ```bash sudo testdisk # 交互式界面选择分区并恢复目录 sudo photorec # 扫描磁盘并恢复文件(按文件头特征识别) ``` 3. **专业数据恢复服务** - 若数据极其重要且工具恢复失败,可联系专业机构(需物理拆卸硬盘并避免通电)。 #### 关键注意事项 - **成功率依赖操作时机**:删除后未写入新数据的恢复率较高。 - **文件系统差异**:NTFS/exFAT等非Linux原生文件系统需使用`ntfsundelete`等专用工具。 - **权限要求**:恢复工具通常需要root权限。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值