LINUX.ORG.RU
ФорумTalks

Есть софт для каталогизации своих hdd

 


1

2

Накопилась у меня за более, чем 10 лет уже кучи hdd, в них какие-то бекапы делал, что-то хранится. И я стал путаться и забывать, где что есть.

Софт должен

1) Сканировать hdd (каталог) и заносить в БД записи какие файлы где лежат.

2) Анализировать потом эту БД и выдавать список файлов с перечнем мест (носителей) для хранения. Одинаковыми считать файлы с одинаковыми именем и длинной. Может с фильтрами по размеру, дате и пр.

3) Не учитывать мусорные файлы, вроде тех, что рядом с сохраненными html. Сами html учитывать. А то будут мегатонны всяких js, css и прочего.

Есть что-то такое готовое?

★★★★★
Ответ на: комментарий от novus

Практически не реально получить коллизии на md5 если специально под коллизии не готовить файлы. То есть pdf многослойный, который специально делают под коллизию – можно. Какие то объёмные, разумные файлы, не реально.

azsx
()

Вам нужна команда tree > disk.txt и grep. Всё остальное скорее ваши мечты, которые в коде реализованы быть не могут.

azsx
()

В Far раньше был плагин, можно было сохранить образ файловой системы с именами файлов и их размерами и заходить в него как на диск. Но прочитать эти файлы нельзя, то есть в них нет данных.

В онтопике есть такое: создать образ файловой системы диска без содержимого файлов, только их расположение? Монтировать и заходить как на обычный диск, только без возможности считать, записать, изменить файл.

Мне кажется, ТСу пригодилось бы такое как раз.

Upd. Плагин назывался CDDIR.

NyXzOr ★★★★
()
Последнее исправление: NyXzOr (всего исправлений: 1)
Ответ на: комментарий от anc

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

Если предположить что у меня сгорит всё вместе со всеми бэкапами, я потеряю:

  • День на настройку рабочего окружения с нуля - ну настрою, что делать
  • Доступ к GH аккаунту - заведу новый, склонирую репы - они все публичные
  • Доступ к VPS с проектами - закажу новые и переналью ансиблом. Базы там тоже публичные, дампы публикуются на самих сервисах.
  • Пароли к куче форумов и сервисов накопленные за 30 лет - ничего из этого не жалко - где-то можно завести новый акк, остальное уже сдохло или делать там нечего (типа кучи self-hosted багтрекеров до’github’ной эпохи).

Ничего фатального. Чтобы стало вот совсем шоколадно, стоит залить дотфайлы на GH (всё никак руки не доходят это сделать), и распечатать на бумаге основные пароли и ssh ключи и положить в пару надёжных мест.

slovazap ★★★★★
()
Ответ на: комментарий от azsx

почему не могут? все перечисленные тс’ом фильтры можно описать любым скриптовым языком. вопрос только в целесообразности

flant ★★★★
()
Ответ на: комментарий от NyXzOr

Попробовал. Не работает. Скомпилировался и даже запускается, показывает окно, но валится с ошибками при попытке отсканировать диск

Exception in Gtk# callback delegate
  Note: Applications can use GLib.ExceptionManager.UnhandledException to handle the exception.
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.DllNotFoundException: libgnome-desktop-3.so.17 assembly:<unknown assembly> type:<unknown type> member:(null)
  at (wrapper managed-to-native) Platform.Gnome.ThumbnailGenerator.gnome_desktop_thumbnail_factory_new(int)
  at Platform.Gnome.ThumbnailGenerator..ctor () [0x00006] in <3097497927c94b31862cdd4a8ccb690b>:0 
  at Platform.Common.ThumbnailGenerator..ctor () [0x0000d] in <3097497927c94b31862cdd4a8ccb690b>:0 
  at VolumeDB.VolumeScanner.FilesystemVolumeScanner..ctor (Platform.Common.IO.DriveInfo drive, VolumeDB.VolumeDatabase database, VolumeDB.VolumeScanner.FilesystemScannerOptions options) [0x00094] in <ab0a3e7cfd21496a9a25c2e253c48aed>:0 
  at VolumeDB.VolumeScanner.VolumeProber.GetScannerForVolume (Platform.Common.IO.DriveInfo drive, VolumeDB.VolumeDatabase database, VolumeDB.VolumeScanner.ScannerOptions[] options) [0x00065] in <ab0a3e7cfd21496a9a25c2e253c48aed>:0 
  at Basenji.Gui.VolumeScanner..ctor (VolumeDB.VolumeDatabase db, Platform.Common.IO.DriveInfo drive) [0x00119] in <92b3a35bb6f443d7b5c4e9c47f3ff304>:0 
  at Basenji.Gui.MainWindow.AddVolume () [0x00103] in <92b3a35bb6f443d7b5c4e9c47f3ff304>:0 
  at Basenji.Gui.MainWindow.OnActAddVolumeActivated (System.Object sender, System.EventArgs args) [0x00000] in <92b3a35bb6f443d7b5c4e9c47f3ff304>:0 
  at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
  at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0007c] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
   --- End of inner exception stack trace ---
  at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0009a] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Delegate.DynamicInvokeImpl (System.Object[] args) [0x0010d] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.MulticastDelegate.DynamicInvokeImpl (System.Object[] args) [0x0000b] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at System.Delegate.DynamicInvoke (System.Object[] args) [0x00000] in <12b418a7818c4ca0893feeaaf67f1e7f>:0 
  at GLib.Signal.ClosureInvokedCB (System.Object o, GLib.ClosureInvokedArgs args) [0x0006d] in <918680a31aa84cb89cfa7cab56ea29b8>:0 
  at GLib.SignalClosure.Invoke (GLib.ClosureInvokedArgs args) [0x0000c] in <918680a31aa84cb89cfa7cab56ea29b8>:0 
  at GLib.SignalClosure.MarshalCallback (System.IntPtr raw_closure, System.IntPtr return_val, System.UInt32 n_param_vals, System.IntPtr param_values, System.IntPtr invocation_hint, System.IntPtr marshal_data) [0x0006c] in <918680a31aa84cb89cfa7cab56ea29b8>:0 
  at GLib.ExceptionManager.RaiseUnhandledException (System.Exception e, System.Boolean is_terminal) [0x00000] in <918680a31aa84cb89cfa7cab56ea29b8>:0 
  at GLib.SignalClosure.MarshalCallback (System.IntPtr raw_closure, System.IntPtr return_val, System.UInt32 n_param_vals, System.IntPtr param_values, System.IntPtr invocation_hint, System.IntPtr marshal_data) [0x00000] in <918680a31aa84cb89cfa7cab56ea29b8>:0 
  at Gtk.Application.gtk_main () [0x00000] in <91487213bf394f4aaf87012594abed2f>:0 
  at Gtk.Application.Run () [0x00000] in <91487213bf394f4aaf87012594abed2f>:0 
  at Basenji.MainClass.Main (System.String[] args) [0x00000] in <92b3a35bb6f443d7b5c4e9c47f3ff304>:0

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

praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от Psilocybe

А причем тут статистика непонятно кого? Бессмертных хардов не бывает, это аксиома, даже лежащий на полке в случае пожара может потерять данные.

anc ★★★★★
()
Ответ на: комментарий от futurama

sha256sum тоже хеш и коллизии будут и с ним.

Зато он будет первым в мире.

t184256 ★★★★★
()

Когда-то (ещё под виндой тогда работал) использовал плагин для TotalCommander - он позволял для подключаемых дисков делать «архивчики» .lst, которые были тупо списком файлов из другого каталога. Это было актуально для бекапов на CD/DVD болванках. А в настоящее время лучше NAS какой-нить собрать действительно.

Qasta
()
Ответ на: комментарий от praseodim

собираешь файловый сервер со свежими дисками и рэйдом.
сливаешь туда содержимое дисков , при этом сортируешь и перебираешь.

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

bloodmeri
()
Ответ на: комментарий от bloodmeri

собираешь файловый сервер со свежими дисками и рэйдом.

сливаешь туда содержимое дисков , при этом сортируешь и перебираешь.

Совет хорошо при наличии финасирования таких вещей.

если для доступа к файлу надо найти жёсткий диск и подключить его , то это почти то же самое что и нет доступа

Хранилища данных вообще-то так и устроены. Данные на лентах для стриммеров и автоматика ставит нужную кассету и подключает ее. Или люди, если столько денег нет.

В общем, проще всего все же просто списки файлов составить.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

файловый сервер собираешь на имеющихся мощностях.
какой нибудь десктоп , где сата побольше есть , и жёсткие диски из имеющихся.
сколько и каких дисков то ?

bloodmeri
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.