|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|||||||||||||||||||||
Сбор уникального контента, и передача по ssh27.07.2012, 02:30. Показов 1545. Ответов 15
Метки нет (Все метки)
Здравствуйте.
Это моя первая тема здесь так что не бейте меня. Появилась интересная задача над которой мне пришлось малость попотеть, но до сих пор я её так и не решил. Задача: Есть около 40 директорий, внутри которых тоже есть директории. Разные люди заливают туда информацию. Мне в свою очереть нужно собирать оттуда уникальный контент и ложись его на другой сервер. При этом сохранять структуру каталогов и подкаталогов. И да при минимальной затрате ресурса, ибо там сотня гигов. Я это решил сделать так : 1. Копировать файлы определенного расширения (ибо нам действительно не нужно все) 2. Копировать файлы залитые за последний час (заливается через ftp но это роли не играет) 3. Не заменять файлы на более новые (то есть, если в базе есть файл rassol2.txt и нам кто то залил его, та мы при копировании в базу пропускаем его) 3. Выполнять этот скрипт каждый час. 4. Выполнять процеcс с низким приоритетом nice -n 10 Для сбора информация нашел 2 пути: rsync , find + cp но в каждом из них у меня есть непонятки. (о них ниже) Примеры: Тестирую локально, и у меня кроме сервера игры не было ни одной директории с кучей файлов разных расширений, и я начал тестить на нем. Вариант под кодовым именем rsync
Вариант под кодовым именем find + cp
Ну затем я уже передам данные на другой дед при помоoи scp мне не нужно готовое решение, мне нужен конкретный путь к решению, пожалуйста не пишите мне man find, man rsync , man cp уже много прочитал. Луче тыкните как котенка. Также я пока искал решение задачи мне советовали создавать md5 суммы и сравнивать, но пока что ума не хватает. Рад услышать ваши варианты решения задачи, открыт для нового и познавательного. Зарание извиняюсь что так изложил свою задачу, и надеюсь вы поймете.
0
|
|||||||||||||||||||||
| 27.07.2012, 02:30 | |
|
Ответы с готовыми решениями:
15
Влияние уникального контента... Можно ли повысить рейтинг без уникального контента? Передача ssh сессии |
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 27.07.2012, 04:08 | |||
|
сначала выведи на экран все файлы, которые будут скопированы
1. найти все файлы по дате изменения 2. выбрать из них нужные по расширению 3. искать выбранные в получателе, удаляя дубликаты 4. создать несуществующие каталоги 5. скопировать файлы
0
|
|||
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|||||||||
| 27.07.2012, 05:35 [ТС] | |||||||||
Я понял что не так выразился. суть вопроса в том как сделать в варианте find + cp копирование все уникальных файлов с директорий cs01d cs02d cs03d cs04d cs05d cs06d ... в директорию csAlld при этом сохранить архитектуру директорий, и их содержимого. Пример: есть директория cs01d в ней есть папка 1 в которой есть файлs rassol, rassol2, rassol3 есть директория cs02d в ней есть папка 2 в которой есть файлs dima, dima2, dima3 есть директория cs03d в ней есть папка 1 в которой есть файлs ubuntu, ubuntu2, ubuntu3 после выполнения скрипта мы должны получить на выходе: Директория csAlld/1 с содержимым rassol, rassol2, rassol3, ubuntu, ubuntu2, ubuntu3 рядом с папкой 1 должна быть вторая папка csolld/2 с содержимым ubuntu, ubuntu2, ubuntu3 если проследить то видно что изначально было 3 разных места с файлами, а на выходе мы получаем один в котором собран уникальный контент. Моего лексического запаса не хватает что бы описать задачу. Но если кто то захочет вникнуть и помочь вы можете выполнить вот это
Нужно добиться тот же результат тока при помощи find + cp
1. Искать все файлы за последний час 2. Выбирать из них нудные по расширению 3. Копировать их, и при копировании указать ключ без замены. 4. копирование в свою очередь создаст каталоги. PS. Как запускать периодичное выполнение я знаю. У меня просто проблема с ключами в find и cp как правило в манах не все рассмотрено. И то что я написал это исходя из того что нарыл.
0
|
|||||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 27.07.2012, 07:33 | |||||||||||
Добавлено через 12 минут
1
|
|||||||||||
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|
| 27.07.2012, 10:45 [ТС] | |
|
у меня пока что знания на уровни любопытного пользователя и поэтому я несильно понял ваш код. Не могли бы вы дать пару разъяснений что бы я мог его добить?
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 27.07.2012, 12:01 | |
|
там нужно ещё фильтрануть расширения через grep, расширения должны задаваться в переменной
суть в том, что он сначала получает пути нужных файлов, а потом для каждого из них создаёт путь, куда тот будет копироваться если был /home/rassol2/doc/test/cs01d/file.txt то он станет csAlld/file.txt и копироваться он будет в /home/rassol2/doc/test/dw/csAlld/file.txt (можешь закомментировать копирование через cp, и просто через echo вывести аргументы для cp, чтобы видеть результат) Добавлено через 32 минуты копирование через cp для несуществующих каталогов не будет работать, их надо сначала создать
0
|
|
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
||||||||||||||||||||||||||
| 28.07.2012, 01:38 [ТС] | ||||||||||||||||||||||||||
|
а нету просто ключа для cp который будет копировать как надо ?
а то ключ --parents не совсем так работает. accept, а ваш вариант вообще не могу понять ![]()
И откуда взялся параметр $newpath если мы задавали только
Добавлено через 2 минуты ааа.
0
|
||||||||||||||||||||||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||
| 28.07.2012, 06:35 | |||||||||||
а rsync даже в POSIX не входит поменял на простое отрезание слева, так как оно к слешам индифирентно
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|||||||||||
| 28.07.2012, 23:44 [ТС] | |||||||||||
|
Мне неясно как это работает по этому тестировал.
при запуске :
0
|
|||||||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 29.07.2012, 04:44 | |
|
поставь echo "$pathfrom" внутри цикла
0
|
|
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|
| 31.07.2012, 02:51 [ТС] | |
|
емм.. А как понять внутр цикла ?
Я просто не совсем программист делаю это для развлечения..
0
|
|
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||
| 31.07.2012, 02:58 | |||||||
1
|
|||||||
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
|||||||||||
| 31.07.2012, 03:43 [ТС] | |||||||||||
|
да вы правы
и директории и все остальное. вот тока мне не удается познать как это вышло. Мы для этого использовали cp, find, mkdir, grep. вот на словах что происходит то ? Мы чекаем определенную директорию на наявность файлов которые подходят по описанию. Время формат затем мы создаем соответствующие директории в нужном нам каталоге, и копируем туда файлы. grep что делает в этом всем ?
0
|
|||||||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||
| 31.07.2012, 04:18 | |||
|
регулярное выражение совпадает со строками, которые заканчиваются на .<расширение><конец строки> <расширение> ::= wad | bsp | res | txt
1
|
|||
|
3 / 3 / 0
Регистрация: 26.07.2012
Сообщений: 122
|
||||||
| 31.07.2012, 05:59 [ТС] | ||||||
|
а вот тут если не тяжело.
получается pathto создается эта переменная. В которой это $dstdir/csAlld/ путь до нового места хранения данных. а вот что это /${pathfrom#*/cs??d/}" ? предположительно както там чекается название файлов и директорий, дописывается до dstdir/csAlld/ и туда уже падают файлы.
0
|
||||||
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||
| 31.07.2012, 09:00 | ||
|
* - любое количество любых символов ? - один любой символ
1
|
||
| 31.07.2012, 09:00 | |
|
Помогаю со студенческими работами здесь
16
Сбор и передача данных электросети на удаленный ПК Обновление контента, передача информации в js Как сделать, чтобы ssh-клиент использовал файл ~/.ssh/config? Как изменить ssh ключ локального репозитория, что бы был он, а не id.rsa из папки .ssh? После обновления контента <div> через AJAX перестают работать события данного контента Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|