Найдите файлы более новыми, чем день и копия

Я решил свою собственную проблему. Я использовал этот единственный usb для начальной загрузки различных версий Linux в прошлом, и некоторые предыдущие конфигурационные файлы, возможно, завинтили что-то. После того, как я удалил все из usb и сделал его загрузочным снова, все работало просто великолепно.

12
12.12.2014, 17:46
5 ответов

Спасибо всем за помощью, получили его работать с использованием комбинации ваших предложений:

пошел с кодом ниже, и он отлично работает.

find /sourcefolder -type f -mtime -1 -exec cp -a "{}" /somefolder \;

Спасибо снова!

2
27.01.2020, 19:55

Вы можете использовать PAX для этого:

pax -wrT "11$(date +%H%M)," . /destination/folder

Бит-бит командной строки:

  • -WR - когда Pax передается обоим -W Rite и -R Опции EAD, которые он копирует. Возможно, также полезно здесь. (но не включено в приведенную вышеуказанную команду)

    • -L чернила - что создает жесткие ссылки, если вообще возможно, а не копирование файлов.

    • -x для ограничения PAX к одному и тому же исходному устройству и / или файловой системе.

    • -S / SRC Regex / Member / - который изменяет файлы в потоке

    • -V ERBOSE - для отчетности по полученным / целевым приведенным сообщениям.

  • -T -T - опция --T -T -T VIME выбирает файлы для целевого архива (или просто для копирования при использовании с -WR ) На их / м отделение или inode / C Hange (или оба) раз. По умолчанию по умолчанию в режиме мода. Из ...

MAN PAX

  • ... Сравнение времени с использованием обоих времен файла полезно, когда PAX используется для создания постепенного архива по времени (только файлы, которые были изменены в течение указанного временного диапазона).

  • Диапазон времени состоит из шести различных полей, и каждое поле должно содержать две цифры. Формат:

    [ [[[[[CC] YY] Mm] Dd] HH] мм [.ss]

  • , где CC представляет собой первые две цифры года (век), YY - это последние две цифры года, первая мм - месяц (от 01 до 12), DD является днем ​​месяца (от От 01 до 31), HH HH - это час дня (от 00 до 23), мм - это минута (от 00 до 59), а SS Это секунды (от00 до 59). Требуется минутное поле мм , в то время как другие поля являются необязательными и должны быть добавлены в следующем порядке:

    HH, DD, MM, YY, CC

  • SS ] Поле может быть добавлено независимо от других полей. Время диапазонов относительно текущего времени, так что ...

    -T 1234 / см

  • ... выберет все файлы с модификацией или изменением inode 12:34 вечера сегодня или позже.

  • Несколько -T -T-диапазон может быть поставлен и проверять останавливаться с первым матчем.

... так что 11 там в моей примерной команде относительно сегодня - это один меньше, чем сегодняшняя дата, которая является двенадцатой - и остальное - это всего лишь стандарт $ (дата) « формат, за которым следует запятая.

... кроме - и последнее, что стоит упомянуть - я использую абсолютный путь для целевого каталога - и поэтому вы должны сделать это. Документы все ссылки неуточненное поведение для относительных целевых путей - и в первый раз, когда я когда-либо пытался использовать PAX , я ругался под моим дыханием на час в замешательстве со всеми странными результатами до Я использовал абсолютный путь.

3
27.01.2020, 19:55

Некоторые реализации cp имеют опцию -t, поэтому вы можете поставить целевой каталог перед файлами:

find . -mtime -1 -exec cp -a --parents -t /somefolder "{}" \+

Обратите внимание, что -a подразумевает --preserve, поэтому я удалил последний.

9
27.01.2020, 19:55

Можно также выбрать точную дату и время, а не возвращаться на определенное количество дней назад

(Это хорошо работает только в том случае, если в именах ваших файлов нет пробелов, табуляции или подстановочных знаков)

cp `find . -type f -newermt '17 dec 2016 20:10:00'` FOLDER

Выше скопированы все файлы в каталоге, которые были созданы после 17 декабря 2016 20:10:00 в папку FOLDER (1 день до сегодня :)

Будьте осторожны с символом для команды find, это НЕ ЭТО: ` это вот это, обратный знак: ` выбор даты с помощью этого: '

Для файлов с пробелами, табуляциями, новыми строками или подстановочными знаками в именах, вы можете использовать одно из решений от Stéphane Chazelas, первое - для GNU, второе - для GNU или некоторых BSD:

find . -type f -newermt '17 dec 2016 20:10:00' -exec cp -t FOLDER {} + 
find . -type f -newermt '17 dec 2016 20:10:00' -exec sh -c 'cp "$@" FOLDER' sh {} +
1
27.01.2020, 19:55

Я выполнял точно такие же функции, но мне нужно было сохранить структуру папок. Следовательно, то, что я сделал, немного отличается.

cd sourcedir
find. -type f -mtime -$days -print0 | tar -czvf ${tarpath}/testtar.tar.gz --null -T -

где $days — количество дней $tarpath — временный путь для хранения этих файлов. и когда я хотел восстановить.

cd $destdir
tar -xvzf ${tarpath}/testtar.tar.gz

Это помогло мне.

Примечание :Если вы хотите исключить какую-либо папку при резервном копировании, вы можете использовать следующую команду

find. -type f -mtime -$days ! -path '*/FolderToavoidSearch/*' -print0 | tar -czvf ${tarpath}/testtar.tar.gz --null -T -

Преимущество :1. У меня всегда была копия того, что я восстанавливал в прошлый раз в сжатом формате.

  1. Также у меня есть пауза между восстановлением, во время которой я могу проверить, что это за файлы, и если все в порядке, то продолжить выполнение скрипта.

  2. Он сохраняет структуру папок, поэтому он просто перезаписывает измененные файлы из исходного каталога в целевой каталог

Примечание :С другой стороны, если требование не ограничено днем, я бы использовал rsync

rsync -avz --exclude 'FolderToavoidSearch' --backup --backup-dir="/backup/dir/test/backup_$(date +\%Y-\%m-\%d)" /source/dir/ /dest/dir/

больше для rsyc с датой здесь

2
27.01.2020, 19:55

Теги

Похожие вопросы