Я решил свою собственную проблему. Я использовал этот единственный usb для начальной загрузки различных версий Linux в прошлом, и некоторые предыдущие конфигурационные файлы, возможно, завинтили что-то. После того, как я удалил все из usb и сделал его загрузочным снова, все работало просто великолепно.
Спасибо всем за помощью, получили его работать с использованием комбинации ваших предложений:
пошел с кодом ниже, и он отлично работает.
find /sourcefolder -type f -mtime -1 -exec cp -a "{}" /somefolder \;
Спасибо снова!
Вы можете использовать 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 (или оба) раз. По умолчанию по умолчанию в режиме мода. Из ...
... Сравнение времени с использованием обоих времен файла полезно, когда 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
, я ругался под моим дыханием на час в замешательстве со всеми странными результатами до Я использовал абсолютный путь.
Некоторые реализации cp
имеют опцию -t
, поэтому вы можете поставить целевой каталог перед файлами:
find . -mtime -1 -exec cp -a --parents -t /somefolder "{}" \+
Обратите внимание, что -a
подразумевает --preserve
, поэтому я удалил последний.
Можно также выбрать точную дату и время, а не возвращаться на определенное количество дней назад
(Это хорошо работает только в том случае, если в именах ваших файлов нет пробелов, табуляции или подстановочных знаков)
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 {} +
Я выполнял точно такие же функции, но мне нужно было сохранить структуру папок. Следовательно, то, что я сделал, немного отличается.
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. У меня всегда была копия того, что я восстанавливал в прошлый раз в сжатом формате.
Также у меня есть пауза между восстановлением, во время которой я могу проверить, что это за файлы, и если все в порядке, то продолжить выполнение скрипта.
Он сохраняет структуру папок, поэтому он просто перезаписывает измененные файлы из исходного каталога в целевой каталог
Примечание :С другой стороны, если требование не ограничено днем, я бы использовал rsync
rsync -avz --exclude 'FolderToavoidSearch' --backup --backup-dir="/backup/dir/test/backup_$(date +\%Y-\%m-\%d)" /source/dir/ /dest/dir/
больше для rsyc с датой здесь