<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; Чтение/запись больших бинарных файлов. Поиск смещений.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=10940&amp;type=atom" />
	<updated>2015-09-11T11:35:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=10940</id>
		<entry>
			<title type="html"><![CDATA[Re: Чтение/запись больших бинарных файлов. Поиск смещений.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97357#p97357" />
			<content type="html"><![CDATA[<p>C perl-ом разобрался. Просто у меня староватая версия.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2015-09-11T11:35:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97357#p97357</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Чтение/запись больших бинарных файлов. Поиск смещений.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=97355#p97355" />
			<content type="html"><![CDATA[<p>Приветствую всех.</p><p>Некие люди, потерли файлы. Просили восстановить, но уже попользовавшись компьютером пару дней. В итоге, программы восстановления файлов наотрез отказываются что-либо делать. Если бы файлы были бинарными, то я не стал бы продолжать, но нужные файлы были xml. И восстанавливать их полностью не обязательно. Нужен только кусок.<br />Для начала, я сделал копию раздела с помощью DriveImage XML и получил здоровенный 50Гб файл.<br />И вот тут вопрос какими инструментами искать? В последнее время мне нравится lua, но он медленный и у него проблемы с открыванием файлов &gt; 2Гб. Решил попробовать (хоть я и не знаю) perl 5.6, но оказалось что он тоже не смог открыть такой большой файл. Причем </p><div class="codebox"><pre><code>open (&quot;fread&quot;, &quot;&lt;&quot;, &quot;DISC_C.dat&quot;) or die &quot;Произошла ошибка $!&quot;;</code></pre></div><p> ничего в консоль не пишет. Оно и ясно, наверняка я делаю что то не так.<br />Тогда я пошел другим путем. Взял 010Editor, и сделал поиск всех известных значений. В итоге получил огромный список&nbsp; смещений относительно начала файла с искомыми значениями Около 4000 тысяч (файлы частенько копировались на флешку и обратно, от того кусков так много и было). Сделал экспорт в CSV файл. Затем небольшой скрипт, который читает файл со смещениями и запускает утилиту dd.exe </p><div class="codebox"><pre><code>dd.exe if=DISC_C.dat of=out.find bs=512 count=1024*1024/512 skip=XXX/512</code></pre></div><p>где, XXX прочитанное смещение. Таким образом я получил ~4000 файлов по 1Мб каждый. С ними стало уже проще работать. Далее не интересно. Но скажу, что все что нужно, я достал.</p><p>Вот тут то я и хотел задать вопросы:</p><ul><li><p>Мне все хотелось сделать с помощью консоли, но 1 пункт - поиск всех вхождений, я смог сделать лишь с помощью 010Editor. Расскажите, какие вы знаете программы, для подобной работы. Линуксовые утилиты тоже приветствуются.</p></li><li><p>В моем случае, скорость dd, была великолепной, но лишь потому, что искал начало файлов, а они были выровнены по размеру сектора. От того то и был выбран блок размером 512байт. А если бы пришлось вырезать куски произвольно, то тогда в самом худшем случае bs=1 и скорость падает в разы. И снова вопрос. Кроме dd.exe, как еще можно вырезать куски файла? Что бы была возможность работы не только с текстовыми файлами, но и с бинарными.</p></li><li><p>Почему все-таки perl не ругается?</p></li></ul>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2015-09-11T10:22:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=97355#p97355</id>
		</entry>
</feed>
