Latest Publications

Ensure – naprawdę gwarantuje wykonanie

Ostatnio przepisywałem skrypt do zbierania statystyk ruchu ze switchy po snmp w celu pobrania ilości oktetów, które przeleciały przez jego interfejsy. Na końcu aktualizuję pliki RRD, w których te informacje zapisuje. Niby prosta rzecz, ale trzeba obsłużyć bardzo wiele wyjątków (błąd połączenia do bazy danych, timeout switcha, wywalenie się jakiegoś wątku itp. itd.).

Skrypt jest odpalany co minutę z crona i zazwyczaj wyrabia się w przeciągu 10 – 15 sekund. Czasem jednak wystąpi jakiś fackup (timeouty do switcha, timeout do bazy danych, load na maszynie itp.), więc taki skrypt może wykonywać się dłużej. W przypadku wykonywania skryptu dłużej niż minuta pojawia się problem , że cron może odpalić drugą instancję, która również może mieć w/w opóźnienia. Jest to sytuacja, do której nie możemy dopuścić.
(more…)

How to resume scp file transfer

When I was uploading a large file from server A to server B, the server B’s disk space ended up, so scp broke transfer and printed an error message.

SCP sent more than 4GB data (90%), so I was looking for a solution on how to resume the previous file transfer. Unfortunately, scp can’t resume file transfer, but … rsync can! In rsync manual we find –partial options:

–partial
By default, rsync will delete any partially transferred file if the transfer is interrupted. In some circumstances it is more desirable to keep partially transferred files. Using the –partial option tells rsync to keep the partial file which should make a subsequent transfer of the rest of the file much faster.

Now we can write a command like this:

rsync --partial --progress -e 'ssh' file_to_upload my.server-b.com:path