<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>15359</bug_id>
          
          <creation_ts>2008-04-15 14:19:35 +0400</creation_ts>
          <short_desc>неэффективная работа с дисковым пространством</short_desc>
          <delta_ts>2008-04-21 13:40:17 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>sisyphus-mirror</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Artem Zolochevskiy">azol</reporter>
          <assigned_to name="Nobody&apos;s working on this, feel free to take it">nobody</assigned_to>
          <cc>mike</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>68344</commentid>
    <comment_count>0</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-15 14:19:35 +0400</bug_when>
    <thetext>Я понимаю, что это всё можно и наконфигурить самому, указав в качестве LIST 
просто ALTLinux и КУЧУ exclud-ов, но всё же, это не очень удобно (из-за 
количесва exclud-ов)

указывая LIST: Sisyphus 4.0/branch итд теряем некоторое место на там, что 
отсутствуют хардлинки (между Sisyphus и 4.0/branch)

Как фичреквест ставлю. Можно просто указать эту особенность в доку, а можно и 
подумать над более эффективным способом зеркалирования. (что-то вроде проверки 
на такие пересечения значений LIST?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68345</commentid>
    <comment_count>1</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2008-04-15 14:21:08 +0400</bug_when>
    <thetext>О чём баг-то?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68348</commentid>
    <comment_count>2</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-15 14:42:27 +0400</bug_when>
    <thetext>(In reply to comment #1)
&gt; О чём баг-то?

Хм... как бы это более понятно... А наверное никак. Так и повторю:

указывая LIST: Sisyphus 4.0/branch итд теряем некоторое место на том, что 
отсутствуют хардлинки (между Sisyphus и 4.0/branch)

Так понятнее?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68349</commentid>
    <comment_count>3</comment_count>
    <who name="Andrey Rahmatullin">wrar</who>
    <bug_when>2008-04-15 14:59:21 +0400</bug_when>
    <thetext>А, понятно.
Ну, хм, не представляю, как это решать.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68352</commentid>
    <comment_count>4</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-15 15:04:12 +0400</bug_when>
    <thetext>Бага вполне понятна. Мы ещё и трафик теряем, т.к. хардлинки не передаются когда
мы по-отдельности миррорим 4.0 бранч и сизиф.

Есть вариант заexclude-ить всё, и include-ить только то что нужно. Подумаю над
реализацией такого режима работы.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68353</commentid>
    <comment_count>5</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-15 15:10:00 +0400</bug_when>
    <thetext>(In reply to comment #4)
&gt; Есть вариант заexclude-ить всё, и include-ить только то что нужно. Подумаю 
над
&gt; реализацией такого режима работы.

Вот вот. Уже теплеет. :-)
В самописном скрипте синхронизации я так и делал. и плясял от конрня - 
ALTLinux/

Сейчас же начал использовать sisyphus-mirror и выходу из положения так.
LIST ALTLinux
и оооогромный exclude


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68356</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Gusarov">dottedmag</who>
    <bug_when>2008-04-15 15:32:07 +0400</bug_when>
    <thetext>FYI: Я начал было писать другую утилитку для мирроринга, пересоздающую 
репозитории по типу dists/pool у debian и качающую каждый файл ровно один раз, 
вне зависимости от количества его в разных репозиториях, но пока она даже не 
дышит.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68363</commentid>
    <comment_count>7</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-15 16:32:03 +0400</bug_when>
    <thetext>Кажется достаточно добавить --link-dest=. в опции rsync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68366</commentid>
    <comment_count>8</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-15 16:44:49 +0400</bug_when>
    <thetext>Поправка: --link-dest=$DESTROOT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68424</commentid>
    <comment_count>9</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-16 14:04:20 +0400</bug_when>
    <thetext>Просьба протестировать версию из
http://git.altlinux.org/people/vvk/packages/sisyphus-mirror.git</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68466</commentid>
    <comment_count>10</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-16 18:54:00 +0400</bug_when>
    <thetext>В общем проверил уже сам, решение с --link-dest работает отлично. Указывать
--link-dest=$DESTROOT нельзя, т.к. rsync в таком случае ничего сканировать не
будет. Как я понял, нельзя в --link-dest указывать вышележащую директорию.

Поэтому я сделал вот что: теперь автоматическим образом формируется множество
--link-dest, куда передаются все имеющиеся директории в $DESTROOT.

Т.о. мы получаем экономию на хардлинках как будьто бы зеркалили весь ALTLinux.

На всякий случай уточню - самостоятельно --link-dest прописывать не надо.

Есть одна особенность: уже имеющиеся файлы rsync не будет заменять на хардлинки,
но можно сделать так:
$ pwd
/var/ftp/ALTLinux
mv 4.0/branch .
sisyphus-mirror -i -l 4.0/branch
rm -rf branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68484</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-04-16 20:51:14 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; А, понятно.
&gt; Ну, хм, не представляю, как это решать.

(In reply to comment #10)
&gt; В общем проверил уже сам, решение с --link-dest работает отлично. Указывать
&gt; --link-dest=$DESTROOT нельзя, т.к. rsync в таком случае ничего сканировать не
&gt; будет. Как я понял, нельзя в --link-dest указывать вышележащую директорию.
&gt; 
&gt; Поэтому я сделал вот что: теперь автоматическим образом формируется множество
&gt; --link-dest, куда передаются все имеющиеся директории в $DESTROOT.
&gt; 
&gt; Т.о. мы получаем экономию на хардлинках как будьто бы зеркалили весь ALTLinux.
&gt; 
&gt; На всякий случай уточню - самостоятельно --link-dest прописывать не надо.
&gt; 
&gt; Есть одна особенность: уже имеющиеся файлы rsync не будет заменять на хардлинки,
&gt; но можно сделать так:
&gt; $ pwd
&gt; /var/ftp/ALTLinux
&gt; mv 4.0/branch .
&gt; sisyphus-mirror -i -l 4.0/branch
&gt; rm -rf branch

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68594</commentid>
    <comment_count>12</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-18 13:59:22 +0400</bug_when>
    <thetext>Fixed in 0.5-alt1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68614</commentid>
    <comment_count>13</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-18 18:57:16 +0400</bug_when>
    <thetext>нет. решение не работает. попробовал сегодня.

имеем:
ls -i /EXPORT/ftp/pub/ALTLinux/Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm /EXPORT/ftp/pub/ALTLinux/4.0/Desktop/4.0.3/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
1982526 /EXPORT/ftp/pub/ALTLinux/4.0/Desktop/4.0.3/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
1982526 /EXPORT/ftp/pub/ALTLinux/Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm

стираю
rm /EXPORT/ftp/pub/ALTLinux/Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm

запуcкаю sisyphus-mirror (на удалённой стороне всё хардлинки)
имею в итоге

ls -i /EXPORT/ftp/pub/ALTLinux/Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm /EXPORT/ftp/pub/ALTLinux/4.0/Desktop/4.0.3/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
1982526 /EXPORT/ftp/pub/ALTLinux/4.0/Desktop/4.0.3/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
 
991233 /EXPORT/ftp/pub/ALTLinux/Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm

пробовалость все версией из git
c4953dffc92cf4e6373d0c5d178551d595d695a6

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68621</commentid>
    <comment_count>14</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-18 21:36:29 +0400</bug_when>
    <thetext>УМВР.
$ ls -i ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm 
./4.0/branch/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
199622704 ./4.0/branch/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
199622704 ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm

У вас похоже local misconfiguration. Нужно посмотреть конфиг, может быть вывод
запуска под bash -x.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68625</commentid>
    <comment_count>15</comment_count>
      <attachid>2578</attachid>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-18 22:50:04 +0400</bug_when>
    <thetext>Created attachment 2578
config

config</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68626</commentid>
    <comment_count>16</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-18 22:51:46 +0400</bug_when>
    <thetext>(In reply to comment #14)
&gt; УМВР.
&gt; $ ls -i ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm 
&gt; ./4.0/branch/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
&gt; 
199622704 ./4.0/branch/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
&gt; 199622704 ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm
&gt; 
&gt; У вас похоже local misconfiguration. Нужно посмотреть конфиг, может быть 
вывод
&gt; запуска под bash -x.

попробуйте 
_убить_ ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm и 
запустить sisyphus-mirror и посмотреть на итог
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68627</commentid>
    <comment_count>17</comment_count>
    <who name="Artem Zolochevskiy">azol</who>
    <bug_when>2008-04-18 22:56:30 +0400</bug_when>
    <thetext>&gt; попробуйте 
&gt; _убить_ ./Sisyphus/files/noarch/RPMS/alt-docs-genextras-0.3-alt4.noarch.rpm и 
&gt; запустить sisyphus-mirror и посмотреть на итог
&gt; 

Хотя это плохой пример. этот пакет как раз обновился. но думаю идея ясна:
* имеем локальные Sisyphus/file1 и 4.0/branch/file1 (иноды одинаковые.)
* убиваем Sisyphus/file1
* запускаем sisyphus-mirror
* если sisyphus-mirror достаточно интеллектуален, то Sisyphus/file1 создастся в 
первозданном виде (с той же инодой, что и 4.0/branch/file1), если нет, то я 
неверно переоткрыл багу. у меня с моим конфигом Sisyphus/file1 создался как 
отдельный файл.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68629</commentid>
    <comment_count>18</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-18 23:32:09 +0400</bug_when>
    <thetext>Угу, таким образом действительно воспроизводится.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68704</commentid>
    <comment_count>19</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-21 10:53:04 +0400</bug_when>
    <thetext>Всё ясно, rsync ищет файлы по пути link-dest +
путь/от/корня/синхронизируемой/директории:

lstat64(&quot;/var/ftp/ALTLinux/4.0/files/noarch/RPMS/update-kernel-0.3-alt4.noarch.rpm&quot;,
0xbfd06cc8) = -1 ENOENT (No such file or directory)
lstat64(&quot;/var/ftp/ALTLinux/archive/files/noarch/RPMS/update-kernel-0.3-alt4.noarch.rpm&quot;,
0xbfd06cc8) = -1 ENOENT (No such file or directory)

В общем нужно несколько переписать алгоритм вычисления списка для --link-dest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>68720</commentid>
    <comment_count>20</comment_count>
    <who name="Vladimir V. Kamarzin">vvk</who>
    <bug_when>2008-04-21 13:40:17 +0400</bug_when>
    <thetext>Для репозиториев, структура которых отличается от Sisyphus, --link-dest
вычисляться не будет. В эту категорию попадают updates и backports.

Для поддержки --link-dest для не-sisyphus-like репозиториев нужно значительно
переделать основной алгоритм синхронизации.

А так, fixed in 0.6-alt1.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2578</attachid>
            <date>2008-04-18 22:50:04 +0400</date>
            <delta_ts>2008-04-18 22:50:04 +0400</delta_ts>
            <desc>config</desc>
            <filename>config</filename>
            <type>text/plain</type>
            <size>1343</size>
            <attacher name="Artem Zolochevskiy">azol</attacher>
            
              <data encoding="base64">IyBkaXIgZm9yIGxvZ3MgYW5kIGxvY2tzClJTSE9NRT1+Ly5zaXN5cGh1cy1taXJyb3IKCiMgbnVt
YmVyIG9mIHRyaWVzCk1BWEFUVEVNUFRTPTUKCiMgcnN5bmMgcHJvdG9jb2wgdGltZW91dCAoLS10
aW1lb3V0KQpUTU9VVDE9NTAwCgojIHBhdXNlIGJldHdlZW4gYXR0ZW1wdHMKVE1PVVQyPTE1Cgoj
IGh0dHAgcHJveHkgc2VydmVyIHdpdGggSFRUUCBDT05ORUNUIChob3N0OnBvcnQpCiNSU1lOQ19Q
Uk9YWT1sb2NhbGhvc3Q6MzEyOAoKIyBzb3VyY2UgbWlycm9yClNSQ1JPT1Q9cnN5bmM6Ly8xOTIu
MTY4LjEuMS9BTFRMaW51eAojU1JDUk9PVD1yc3luYzovL21pcnJvci55YW5kZXgucnUvYWx0bGlu
dXgKI1NSQ1JPT1Q9cnN5bmM6Ly9pYmlibGlvLm9yZy9MaW51eC9kaXN0cmlidXRpb25zL2FsdGxp
bnV4CiNTUkNST09UPXJzeW5jOi8vZnRwLmxpbnV4LmtpZXYudWEvQUxUTGludXgKIwoKIyBkaXN0
aW5hdGlvbiBkaXJlY3RvcnkKREVTVFJPT1Q9L0VYUE9SVC9mdHAvcHViL0FMVExpbnV4CiMgZXhh
bXBsZTogd2UgY2FuIHVzZSBzaXN5cGh1cy1taXJyb3IgZm9yIHN5bmNocm9uaXplIHJlcG9zIHRv
IHJlbW92YWJsZSBtZWRpYQojREVTVFJPT1Q9L21lZGlhL2Rpc2svQUxUTGludXgKCiMgdGVtcCBk
aXJlY3RvcnkgZm9yIHN5bmNocm9uaXphdGlvbgpUTVBERVNUPS5uZXcKCiMgYmFja3VwIHR5cGUg
LSBSRUFEIFJFQURNRS5VVEY4CiNCQUNLVVBfVFlQRT1vbmUKI0JBQ0tVUF9UWVBFPXNuYXBzaG90
cwoKIyBkaXJlY3RvcnkgZm9yIGJhY2t1cHMKI0JBQ0tVUF9ESVI9L3Zhci9mdHAvQUxUTGludXgv
cHJldmlvdXMtc3RhdGUKI0JBQ0tVUF9ESVI9L3Zhci9mdHAvQUxUTGludXgvYXJjaGl2ZQoKIyBy
ZXBvcyBmb3Igc3luYwpMSVNUPSJTaXN5cGh1cyA0LjAvYnJhbmNoIHVwZGF0ZXMiCiNMSVNUPSJT
aXN5cGh1cyA0LjAvYnJhbmNoIHVwZGF0ZXMgYmFja3BvcnRzIHBlb3BsZS9zaHJlayIKCiMgZXhj
ZXB0aW9ucyBmaWxlICgtLWV4Y2x1ZGUtZnJvbT0pCkVYQ0xVREVfRklMRT0vZXRjL3Npc3lwaHVz
LW1pcnJvci9leGNsdWRlCgojIHRlbXAgZGlyIGZvciByc3luYyAoLS1wYXJ0aWFsLWRpcikKUEFS
VElBTD1+Ly5zaXN5cGh1cy1taXJyb3IKCiMgc3BlZWQgbGltaXQgaW4gS2IvcyAoLS1id2xpbWl0
PSkKI1NQRUVEPTUxMgojU1BFRUQ9CgojIG90aGVyIGFyZ3VtZXRzIGZvciByc3luYwpBUkdTPSIt
cmx0Y3ZIUCAtLWRlbGV0ZS1hZnRlciAtLXN0YXRzIgoKIyBpZiAxLCBwcmludCBvdXRwdXQgdG8g
c3Rkb3V0CklOVEVSQUNUSVZFPTEKCiMgYWRtaW4ncyBlbWFpbCAoZm9yIHJlcG9ydGluZyBwcm9i
bGVtcykKTUFJTlRBSU5FUj1yb290QGxvY2FsaG9zdAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>