Linux重要的同步命令_sync

摘要: 本文从 是什么为什么怎么用三个角度介绍了 Linux 重要的同步命令 sync。

什么是 sync

Linux sync 命令用于将位于缓冲区中的数据写入永久性存储中。

缓冲区位于易失性存储介质中,例如 DDR(内存)、SRAM 等,这种介质中的数据在掉电时会丢失。

永久性存储,也成为了非易失性存储,是指硬盘、磁盘等介质,掉电之后数据不会丢失。

为什么 sync

  • 为什么需要缓冲区

    缓冲区的出现主要是因为处理器、易失性存储(内存等)和非易失性存储(硬盘等)的性能差别导致的。

    处理器的速度最快,易失性存储次之,而非易失性存储的速度最慢。

    如果没有缓冲区,每次处理器修改文件时都需要等待硬盘把数据保存好后,才能继续执行其他任务。这会影响计算机的整体性能,使计算机的处理速度变慢。

    有了缓冲区之后,处理器每次修改文件时,只需等待内存保存数据即可。当内存中的数据积累到一定数量,或者过了一定时间,就可以批量写入硬盘。这种方式可以大大提高计算机的性能和效率,减少计算机的响应时间。

  • 缓冲区带的风险

    正常情况下,系统每隔一段时间(几秒或几十秒)就会把缓冲区的数据写入硬盘,避免数据丢失。

    当系统正常关机(shutdown)或者重启(reboot)的时候,系统也会将缓冲区的数据写入硬盘(其实就是通过 sync 实现的)。

    但是,如果设备异常掉电或者系统崩溃,那么缓冲区的数据就来不及写入硬盘,从而导致数据丢失,甚至引起系统损坏。

  • sync 的作用

    Linux 的 sync 命令为我们提供了一种主动将缓冲区的数据写入硬盘的机制。当我们更改了重要文件后,可以立即使用 sync 命令,将缓冲区的数据同步到硬盘中。

怎么用 sync

基础语法

sync [options] [file]

optionsfile选项不是必须的,通过file可以指定需要同步的文件。

当不传递任何参数的时候,sync 命令会将缓冲区中的所有数据同步到硬盘中。例如:

sync

options 参数

  • -d, --data:只同步文件的数据,不同步不需要的元数据。

  • -f, --file-system:只同步包含指定文件的文件系统,此时文件数据和元数据都会被同步。

  • --help:显示帮助。

  • --version:查看版本信息。

示例

  • 同步缓冲区中的所有数据

    sync
    
  • 同步指定文件/home/linux/myfile1/home/linux/dir2/myfile2

    sync /home/linux/myfile1 /home/linux/dir2/myfile2
    
  • 只同步文件数据和必需的元数据,不同步不需要的元数据

    sync -d ./myfile1 ./myfile2 ./myfile3
    
    
  • 同步./mydir目录,包括该目录中的所有文件和子目录

    sync ./mydir
    
  • 同步包含 myfile1 的文件系统

    sync -f myfile1
    
  • 查看版本信息

    sync --version
    
  • 查看帮助文档

    sync --help