Работа с файлами и каталогами в Linux

Материал из sysadm
Перейти к навигации Перейти к поиску

Атрибуты

  • a - файл можно открыть на запись только в режиме добавления
  • A - открытие файла не изменяет время доступа atime (access time)
  • c - автоматическое сжатие данных файла ядром, прозрачно для файловых операций
  • C -
  • d - не бэкапить, файл будет пропущен при бэкапе, поддерживается утилитой dump (поддержку в других средствах резервирования нужно проверять)
  • D -
  • e - указывает на то что файл содержит блоки данных на диске, атрибут нельзя удалить утилитой chattr
  • E - указывает на то что файл зашифрован (используется экспериментальными патчами шифрования, изменение с помощью chattr может быть недоступно)
  • F - игнорирование регистра символов (верхний/нижний) для путей ниже данного каталога, атрибут может быть установлен только на пустых каталогах в файловых системах с включенной возможностью casefold
  • i - запрет на изменение (файл нельзя открыть в режиме записи, удалить, переименовать, создать на него ссылку, изменить большинство его метаданных), для изменения данного атрибута требуются права суперпользователя
  • I -
  • j -
  • N -
  • P -
  • s -
  • S -
  • t -
  • T -
  • u -

Изменение атрибутов

chattr +-attribute path

# примеры
chattr +i /home/user/readme.txt
chattr -i /home/user/readme.txt

Просмотр атрибутов

lsattr path

Поиск дубликатов файлов

Утилита командной строки fdupes находит файлы одинакового размера, с помощью md5sum сравнивает хеш начального фрагмента, потом всего файла, потом проводит полное побайтовое сравнение

Установка fdupes

# CentOS 8
dnf install epel-release
dnf install fdupes

Примеры использования fdupes

# найти дубли в каталоге dir1 (без подкаталогов) и в каталоге dir2 (с подкаталогами)
fdupes /path/to/dir1 -r /path/to/dir2

# найти дубли и запросить какой вариант оставить
fdupes -rd /path/to/directory


Поиск и выполнение операций над файлами,каталогами

Показать пустые файлы и папки

find /path/to/directory -empty

Показать только пустые файлы

find /path/to/directory -type f -empty

Показать только пустые папки

find /path/to/directory -type d -empty

Удаление пустых файлов

find /path/to/directory -type f -empty -delete

Удаление пустых каталогов

# вариант 1
find /path/to/directory -type d -empty -delete

# вариант 2
find /path/to/directory -type d -empty -exec rmdir '{}' \;

Удаление файлов старше 14 дней

find /path/to/directory -type f -mtime +14 -exec rm -f '{}' \;

Удаление файлов по маске

find /path/to/directory -type f -name '*some_string*.txt' -exec rm -f '{}' \;

Надежное удаление

Команда shred переписывает содержимое файлов генератором случайных данных, что делает восстановление содержимого практически невозможным.

# затирание диска
shred /dev/<блочное_устройство>

# проход по всем подкаталогам и затирание содержимого файлов
find <dir> -type f -exec shred {} \;