<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Linux Forum &mdash; Не работает скрипт резервного копирования для новых файлов]]></title>
	<link rel="self" href="https://linuxforum.ru/extern.php?action=feed&amp;tid=37469&amp;type=atom" />
	<updated>2015-01-24T05:24:56Z</updated>
	<generator>PunBB</generator>
	<id>https://linuxforum.ru/viewtopic.php?id=37469</id>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=442005#p442005" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>конкретная задача - быстрая и эффективная реализация</p></blockquote></div><p>за быстротой и эффективность в bash&#039;е не нужно гоняться. Всё равно тормозить у вас будет tar скорее всего, со своим вводом/выводом.</p><p>ИМХО <strong>гнаться нужно за понятностью и читаемостью</strong>, что-бы через год открыть скрипт, и за минуту его допилить применительно к новым условиям задачи.</p><p>А если вам нужна скорость, то лучше будет заменить HDD на SSD (в данном случае).</p><div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>Плюс к этому проблему (как мне сразу показалось) создания темпового файла я обратил в плюс (это ведь лог-файл непосредственно файлов добавляемых в архив - изучение которого помогло исключить много лишнего и абсолютно ненужного мусора)</p></blockquote></div><p>ага. Я тоже так делаю, потому вариант и первый. Остальные варианты альтернативные, и лично я предпочитаю их не использовать на практике.</p><p>PS: тут в тему будут <strong>nice</strong> и <strong>ionice</strong><br />Эти команды <strong>снижают приоритет</strong> tar&#039;а и find, что-бы они не мешали основной работе.<br /></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2015-01-24T05:24:56Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=442005#p442005</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441973#p441973" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>спрашивайте, что именно непонятно?</p></blockquote></div><p>Док, снимаю шляпу!<br />За, поистине немалый, опыт общения в IT форумах - Вы один из немногих профессионалов, лаконично и без лишнего пафоса объясняете для Вас, вещи элементарные, для же меня - золотой опыт.</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>(эта команда создаёт только имя, но НЕ файл, но это не важно</p></blockquote></div><p>смысл кода я понял сразу, поэтому не стал углубляться в особенности реализаций в конкретных ОС-nix, конкретная задача - быстрая и эффективная реализация <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /></p><p>Теперь к теме:<br />Я сразу не отписал - извиняюсь - я остановился на первом варианте с промежуточным файлом - более простой (и менее ошибочный из за своей простоты, в чём и более выгодный).<br />Плюс к этому проблему (как мне сразу показалось) создания темпового файла я обратил в плюс (это ведь лог-файл непосредственно файлов добавляемых в архив - изучение которого помогло исключить много лишнего и абсолютно ненужного мусора)</p><p>Ещё раз большое Спасибо!<br />(поставил на Ваш форум прямую ссылку со статьи блога - хоть не материальная, а всё таки благодарность <img src="https://linuxforum.ru/img/smilies/ab.gif" alt="ab" /> )</p>]]></content>
			<author>
				<name><![CDATA[GTAlex]]></name>
				<uri>https://linuxforum.ru/profile.php?id=35846</uri>
			</author>
			<updated>2015-01-23T17:47:04Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441973#p441973</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441856#p441856" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>tar: Option --after-date is not supported</p></blockquote></div><p>поставьте tar поновее. Это у вас что, CentOS5 что-ли?</p><div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>первый вариант пашет частично - mktemp не сработал</p></blockquote></div><p>что значит &quot;не сработал?</p><p>Ну вот вам аналог<br /></p><div class="codebox"><pre><code>TMP=&quot;/tmp/tmp.$RANDOM&quot;</code></pre></div><p>(эта команда создаёт только имя, но НЕ файл, но это не важно)<br /></p><div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>но с синтаксисом пока не могу разобраться</p></blockquote></div><p>спрашивайте, что именно непонятно?<br /></p><div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>а вообще я так понял можно в моём варианте create заменить на append и вуаля</p></blockquote></div><p>в принципе да, но <br />1. неудобно обрабатывать ошибки, когда две команды СРАЗУ работают, как у вас в одностроке.<br />2. вам же нужно сжатый архив, а tar --append так не умеет.<br />3. это очень долго, открывать файл, потом туда добавлять… Хотя мой третий пример ещё дольше, т.к. у меня по одному добавляются.</p><p>Да, на практике посмотрите tar --update, это как append, только добавляются<strong> только новые файлы</strong>. Хороший вариант, но тоже работает лишь без сжатия.</p><p>Можно сделать как:<br />1. на сервере хранить бекап без сжатия, и добавлять туда новые файлы<br />2. потом сжимать архив bzip2 --keep, опция НЕ удаляет архив без сжатия<br />3. теперь сжатый архив можно отправить на другой сервер, и удалить с этого.</p><p>Тогда у вас в <strong>одном архиве будут все версии файла</strong>. По умолчанию извлекаются все,но все старые затираются новыми. Это можно изменить, и вытащить старую версию.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2015-01-23T10:06:12Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441856#p441856</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441807#p441807" />
			<content type="html"><![CDATA[<p>второй вариант</p><p>tar: Option --after-date is not supported</p><div class="quotebox"><cite>drBatty пишет:</cite><blockquote><p>ВАЖНО: для бекапов не нужно так извращаться с одностроками, следует учесть все ошибки.</p></blockquote></div><p>согласен на все 100</p><br /><p>первый вариант пашет частично - mktemp не сработал <br />прописал временный файл явно - всё попёрло</p><p>ещё раз огромное спасибо!</p><p>третий логикой понял, но с синтаксисом пока не могу разобраться </p><p>а вообще я так понял можно в моём варианте create заменить на append и вуаля<br /></p>]]></content>
			<author>
				<name><![CDATA[GTAlex]]></name>
				<uri>https://linuxforum.ru/profile.php?id=35846</uri>
			</author>
			<updated>2015-01-23T06:51:03Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441807#p441807</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441805#p441805" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>GTAlex пишет:</cite><blockquote><p>Походу какое то ограничение при передаче параметров из find в tar&nbsp; срабатывает ...</p></blockquote></div><p>всё правильно: xargs режет список аргументов дозами по несколько сотен..тысяч имён файлов. Дальше у вас записано &quot;tar --create&quot; что значит &quot;создать архив&quot;. Он и создаётся несколько раз. Вы наблюдаете только последний вариант.</p><p>Если вы хотите делать обязательно так, то вам следует использовать --append, которая не работает для сжатых файлов, потому вам следует ещё потом сжать, как в третьем варианте.</p><p><strong>ВАЖНО</strong>: для бекапов не нужно так извращаться с одностроками, <strong>следует учесть все ошибки</strong>. А то возможно ситуация, что у вас ошибка в скрипте, а вы думаете &quot;у меня есть бекап&quot;. конец немного предсказуем <img src="https://linuxforum.ru/extensions/bbcode_smiles/img/ak.gif" alt="ak" /></p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2015-01-23T06:33:44Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441805#p441805</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441804#p441804" />
			<content type="html"><![CDATA[<p>Спасибо, буду пробовать</p>]]></content>
			<author>
				<name><![CDATA[GTAlex]]></name>
				<uri>https://linuxforum.ru/profile.php?id=35846</uri>
			</author>
			<updated>2015-01-23T06:31:25Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441804#p441804</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441802#p441802" />
			<content type="html"><![CDATA[<p><strong>GTAlex</strong>, а если временный файл?</p><div class="codebox"><pre><code>#!/bin/bash

set -x

TMP=$(mktemp)
find -mtime -10 &gt;$TMP
tar --create --files-from $TMP
rm --force $TMP</code></pre></div><p>второй альтернативный вариант:</p><p><div class="termtitle" style="font-family: sans-serif; position:relative; height:auto; width:auto; background:#3A4061; color:#FFFFFF; padding: 1px;"><b> Консоль:</b></div>
<div class="termcont" style="font-family: Terminus; position:relative; height:auto; width:auto; overflow-x:scroll; white-space: nowrap ; overflow-y:auto;background:#000000; color:#4EF44E; line-height:1.2; padding: 3px; font-size: 1rem; max-height: 60vh">tar --create --after-date &#039;10 days ago&#039;</div></p><p>ну и третий вариант</p><div class="codebox"><pre><code>#!/bin/bash

ARCNAME=&quot;arcname.tar&quot;
:&gt;&quot;$ARCNAME&quot;

while read FILENAME; do
  tar --append --file &quot;$ARCNAME&quot; &quot;$FILENAME&quot;
done&lt; &lt;(find -mtime -10)

bzip2 &quot;$ARCNAME&quot;</code></pre></div><p>варианты 1 и 3 не работают если в имени файла есть перенос строки.</p>]]></content>
			<author>
				<name><![CDATA[drBatty]]></name>
				<uri>https://linuxforum.ru/profile.php?id=86</uri>
			</author>
			<updated>2015-01-23T06:26:43Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441802#p441802</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Не работает скрипт резервного копирования для новых файлов]]></title>
			<link rel="alternate" href="https://linuxforum.ru/viewtopic.php?pid=441799#p441799" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>find . -type f -mtime -10 -print0 | xargs -0 tar -cjf archive.tar.bz2</code></pre></div><p>Не пашет на рабочем проект (добавилось порядка 2к картинок) - архивирует штук 100 и всё тут<br />Отдельно find запускаю с выводом результатов в файл - всё находит<br />Походу какое то ограничение при передаче параметров из find в tar&nbsp; срабатывает ... <br />Весь день убил - не нашел решение <img src="https://linuxforum.ru/img/smilies/ac.gif" alt="ac" /></p><p>Такая конструкция вроде пашет (без xargs), но когда натравляю её на другую папку вообще тупо виснет<br /></p><div class="codebox"><pre><code>find . -type f -mtime -10 -print0 | zip archive.zip @</code></pre></div><p>Подробнее <a href="http://gtalex.ru/kak-dobavit-v-arxiv-tolko-novye-fajly">тут</a></p>]]></content>
			<author>
				<name><![CDATA[GTAlex]]></name>
				<uri>https://linuxforum.ru/profile.php?id=35846</uri>
			</author>
			<updated>2015-01-23T05:28:45Z</updated>
			<id>https://linuxforum.ru/viewtopic.php?pid=441799#p441799</id>
		</entry>
</feed>
