powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / хэш для новых файлов
10 сообщений из 10, страница 1 из 1
хэш для новых файлов
    #39405243
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плз. как реализовать (в особенности третий пункт):

1) Есть папка с файлами на линукс (NAS бокс)
2) Периодически запускается скрипт, который считает хэш sha1 для файлов и записывает результаты в файл
3) Когда скрипт запускается снова, надо ситать sha1 толко для вновь поступивших новых файлов т.е. для которых не был посчитан
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39405299
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решение в лоб за две минуты. Думаю, покрасивше способ найдётся.
1. Список файлов, для которых существуют хеши, сохранить в отдельном файле, пусть будет ~/list. Типа такого cut -d" " -f 3 ~/shasums >>~/list
2. Что-то вроде cd /path/to/folder ; ls | grep -v -f ~/list | xargs sha1sum >~/shacums
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39405308
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

спасибо, завтра буду пробовать.
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39405792
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

пробую, пока сложности:

с текстовом файле sha1.txt находится вывод sha1sum вот такой:

aee371adee687344659017af5e25912c11895fbc */volume1/Backup/Server123/master/master_backup_2017_02_15_020006_9581965.voll
b0147699001632e6aff6d3839df5ca74152a11d9 */volume1/Backup/Server123/model/model_backup_2017_01_28_020011_8381168.voll

Получается, надо выводить перечень файлов, которые не встречаются в файле sha1.txt.

Ваш пример использует строки файле как шаблон, а надо наоборот.

Пробую
вот так, но -f указывает, что шаблоны в файле, а надо наоборот
find ./*/* -name *.voll | grep -o '/.*' | grep -v -f test.txt

вот так, т.е. из имени файла делаю шаблон .*/blabla/balbal.voll, но и так не работает
find ./*/* -name *.voll | grep -o '/.*' | awk '$0=".*"$0' | grep -v test.txt

Заранее спасибо большое
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39405812
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander UsПолучается, надо выводить перечень файлов, которые не встречаются в файле sha1.txt.Да, так и предполагал. Ключик -f указывает, что шаблоны надо брать из файла. А вот -v указывает, что надо выводить только не найденные строкиman grep -v, --invert-match
Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX.)

Разумеется, Ваш sha1.txt надо сперва подрихтовать, оставив только второе поле (cut, awk), чтобы его использовать в качестве списка шаблонов.
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39406064
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

последовал Вашему совету, заработало:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
rm  /volume1/BackUp/ServerXXX/sha1.pattern.txt
sed -e 's/^[a-z0-9]* *//g' /volume1/BackUp/ServerXXX/sha1.voll4.txt >> /volume1/BackUp/ServerXXX/sha1.pattern.txt
#
rm -f /volume1/BackUp/ServerXXX/sha1.voll.neu.txt
find /volume1/BackUp/ServerXXX/*/* -name *.voll | grep -v -f /volume1/BackUp/ServerXXX/sha1.pattern.txt | xargs sha1sum >> /volume1/BackUp/ServerXXX/sha1.voll.neu.txt
#
cat /volume1/BackUp/ServerXXX/sha1.voll.neu.txt  >> /volume1/BackUp/ServerXXX/sha1.voll4.txt



Но ещё не ясно:
как избавиться от указания полного пути /volume1/BackUp/ServerXXX
я пробовал заменить на переменную

Код: powershell
1.
2.
folder=/volume1/BackUp/ServerXXX
rm  $folder/sha1.pattern.txt


но так не работает
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39406096
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Usне работаетОтличное техническое описание проблемы!
Отсюда же не видно ни проблемный код, ни контекст использования, ни сообщения об ошибках...

Конкретно эти две строчки вполне рабочие. Во всяком случае, тест нормально идёт:
Код: sql
1.
2.
3.
$ folder=/volume1/BackUp/ServerXXX
$ echo rm $folder/sha1.pattern.txt
rm /volume1/BackUp/ServerXXX/sha1.pattern.txt
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39406489
Alexander Us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

извините, за беспокойство: оказалось, в эдиторе была виндовая настройка для окончания строк, это былой причиной ошибок.

И спасибо, Вы очень помогли.
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39406650
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander Usв эдиторе была виндовая настройка для окончания строк, это былой причиной ошибок.Странно, конечно. Или лишний /r влезал в середину итоговой строки?


Alexander UsИ спасибоДа не за что. Не думаю, что моё решение достаточно простое.
...
Рейтинг: 0 / 0
хэш для новых файлов
    #39407118
Alexander Us,

find -mtime
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / хэш для новых файлов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]