Как очистить кеш жесткого диска и флэш-диска (или файловой системы) из командной строки? - PullRequest
17 голосов
/ 05 марта 2010

Я пишу скрипт резервного копирования, который

  1. Копирует данные на резервный диск.
  2. Очищает резервную копию диска.
  3. Выполняет проверку целостности хеша.

Раньше я делал sleep(60) для ожидания минуты, чтобы ядро ​​автоматически сбрасывало данные. Что, я думаю, излишне, так что теперь я пытаюсь sudo hdparm -F --verbose /dev/disk, но он сообщает об ошибке - HDIO_DRIVE_CMD(flushcache) failed: Invalid exchange несколько раз.

Мне интересно, существует ли какой-либо стандартный способ очистки кэша на жестком диске. Я думаю, что это потому, что usb-creator-gtk делает это, umount делает это.

Я использую Ubuntu x64 9.10

PS: я пытаюсь избежать "sync" , потому что на этой странице написано, что не безопасно. http://ubuntuforums.org/showthread.php?t=589975

Ответы [ 2 ]

31 голосов
/ 05 марта 2010

Достаточно ли sync?

Редактировать: относительно вашего редактирования - вы пытаетесь избежать синхронизации, потому что какой-то парень в интернете разместил отказ от ответственности CYA на своем посту? Может быть, с синхронизацией что-то не так, чего я не знаю, но это может стоить 2-го поста сам по себе.

Тем не менее, со страниц информации о Linux:

sync записывает любые данные, буферизованные в памяти, на диск. Это может включают (но не ограничиваются ими) модифицированные суперблоки, модифицированные inode, и отложено чтение и запись. Это должно быть реализовано ядром; Программа синхронизации выполняет только системный вызов sync.

3 голосов
/ 05 марта 2010

Вам нужен вызов функции fsync (man section 2), но если вы делаете это в скрипте, вы, вероятно, захотите использовать команду sync (man section 8), которая просто вызывает sync ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...