Я хочу перечислить все файлы, которые я изменил в этом году и создаю резервную копию их. Кто-либо знает, существует ли команда для списка их?Заранее спасибо.
Если Вы хотите найти файлы, find
команда является мощным инструментом. Можно просмотреть каталог и распечатать пути всех файлов, которые соответствуют некоторым тестам:
# find all files in /some/directory whose name starts with 'project_b'
find /some/directory -iname 'project_b*'
# find all files in /some/directory which are owned by user 'joe'
find /some/directory -user joe
# find all files in /some/directory whose name starts with 'project_b'
# but which are *not* owned by user 'joe'
find /some/directory -iname 'project_b*' -and -not -user joe
Для получения даты последнего изменения файла (или более точный, последнего изменения содержания файла), можно проверить на метку времени mtime. find
имеет тест для mtime:
# find all files, whose mtime is less than 365 days back
find /some/directory -mtime -365
Это до сих пор дает Вам список всех файлов, которые Вы хотите скопировать. Теперь для самого резервного копирования. find
приносит названную опцию -exec
это применяет команду к каждому файлу, который она находит:
find /some/directory -iname '*.txt' -exec cp {} /somewhere/else \;
Если команда находки находит test.txt
, other.txt
и something.txt
, -exec
часть выполнилась бы:
cp test.txt /somewhere/else
cp other.txt /somehwere/else
cp something.txt /somewhere/else
Поскольку Вы, вероятно, видите, {}
заменяется рассматриваемым файлом.
Править: Вероятно, необходимо найти лучшее решение, чем просто cp
для самого резервного копирования, потому что cp
просто скопировал бы каждый файл в /somewhere/else
не сохраняя структуру каталогов.
В целом, специализированная резервная программа могла бы быть лучшим выбором.
Принятие Вас хочет сохранить дату ограниченной текущим годом, который Вы могли использовать -newermt
с датой.
Это посмотрит в текущем каталоге для любых файлов после 1-го ноября 2016 и скопирует их в цель / при поддержании структуры каталогов.
find . -newermt "2016-11-01 00:00:00" -exec cp --parents {} /target \;
Эти --parents
добавленный к команде CP позволяет Вам копировать файлы maintaing папки, в которых она существует.
, Например...
ubuntu@ubuntu-xenial:~$ ls
percona-release_0.1-4.xenial_all.deb t t2 testdir testfile2.vm testfile.vm
ubuntu@ubuntu-xenial:~$ cp --parents t/output.txt testdir/
ubuntu@ubuntu-xenial:~$ ls testdir/
directory2 t
, Когда я скопировал t/output.txt
в testdir/
, это создало папку t
в testdir/
и затем скопировало файл.
Перечислять все файлы, измененные в этом году наряду с его деталями:
find / -mtime -365 -ls
Это перечислит все с прошлых 365 дней.
Для показа только регулярных файлов добавляют -type f
к вышеупомянутой команде.
Для получения списка всех измененных файлов (с полным путем):
find / -mtime -365
можно скопировать эти файлы где угодно с помощью cp
, или scp
и т.д.
Добавляют -printf "%f\n"
к концу команды для печати только имен файлов.
Я использую некоторые псевдонимы
alias last-24-hours='sudo find * -ctime -1 -type f'
alias last-week='sudo find * -ctime -7 -type f'
, и можно сделать псевдоним
alias last-year='sudo find * -ctime -365 -type f'
, но он, вероятно, произведет очень длинный список.
-o-
, Если Вы хотите графический обзор, можно использовать баобаб , для наблюдения, где существует много данных (и где Вы могли 'убрать' перед резервным копированием).
-o-
альтернатива должна использовать инструмент, который может сделать инкрементное резервное копирование, например rsync. Это автоматически найдет что потребности быть добавленным или замененным в резервном копировании.