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

1) Есть папка с файлами на линукс (NAS бокс)
2) Периодически запускается скрипт, который считает хэш sha1 для файлов и записывает результаты в файл
3) Когда скрипт запускается снова, надо ситать sha1 толко для вновь поступивших новых файлов т.е. для которых не был посчитан
...
Рейтинг: 0 / 0
15.02.2017, 21:52
    #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
15.02.2017, 22:14
    #39405308
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэш для новых файлов
vkle,

спасибо, завтра буду пробовать.
...
Рейтинг: 0 / 0
16.02.2017, 14:45
    #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
16.02.2017, 15:00
    #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
16.02.2017, 18:29
    #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
16.02.2017, 19:09
    #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
17.02.2017, 12:41
    #39406489
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
хэш для новых файлов
vkle,

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

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


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

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


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