среда, 4 мая 2016 г.

rsync вместо cp

Ещё одна заметка в стиле "хозяйке на заметку". ;) Пишу больше для себя, что бы не забыть, но может и кому ещё пригодится.
Не интересующимся консолью и *nix системами смело можно дальше не читать.
И так. Если вы часто используете консоль, как я, и периодически приходится копировать большие файлы, то ждать неведомо чего окончания команды cp порой очень тоскливо. Поэтому я для этого уже довольно давно использую rsync:

rsync -pogh --partial --inplace --append --progress <источник> <приёмник>

Помимо показа "процентов" есть ещё пара плюсов: если файл скопирован только частично по каким-то причинам (например вам пришлось оборвать копирования и вы хотите продолжить), то копирование продолжится, что весьма приятно. :) Если файл уже лежит там и он полностью идентичен - то копирования не произойдёт: rsync только проверит файл. Если файл надо скопировать на удалённую машину, то "приёмник" может быть например ssh, что тоже удобно.

Плюс к этому сегодня "запилил" (раньше всё руки не доходили) "добивку" аргументов в zsh. Для этого rsync обернул в функцию:

cat ~/.zsh_func
cpv()
{
 rsync -pogh --partial --inplace --append --progress -- "$@"
}
---skip---

А в .zshrc добавил:

compdef _cp cpv

Ну собственно и всё, вроде бы. :) Увидимся в консоли. ;)

English part:
Another note in the style of "note of housewife". ;) I'm writing this for myself, but maybe this would be useful for someone too.
People who not interested a console, *nix systems, etc can safely stop reading.

So. If you frequently use console like me, and occasionally have to copy huge files, then wait until the "cp" command will finish sometimes very sad. I am using for this for a long time been command rsync:

rsync -pogh --partial --inplace --append --progress <source> <destination>

Besides showing progress bar it has a several of advantages: if a file is copied only partially for whatever reason (eg you had to break up and you want to continue), then operation will continue, which is very nice. :) If a file is already exist and it is identical - copying will not happen: rsync only check files and not more. If a file must be copied to the remote machine, the destination can be for example the ssh, which is also convenient.

I am using zsh. And today make configuration for zsh completion system. To do this first I'm wrapped rsync command in a function:

cat ~/.zsh_func
cpv()
{
 rsync -pogh --partial --inplace --append --progress -- "$@"
}
---skip---

And added this to my .zshrc config file:

compdef _cp cpv

Well, actually, that's all folks. :) See you at the console. ;)

日本の一部:
「主婦のノート」のスタイルで別のノート。^ー^ 私は自分自身のためにこれを書いているが、多分これはあまりにも誰かのために有用であろう。
コンソール、* nixシステム、など興味を持っていない人々が安全に読み取りを停止することができます。

あなたが頻繁に私のようなコンソールを使用し、時折巨大なファイルをコピーする必要があれば、「CP」コマンドまで待つことは、時には非常に悲しい終了します。私は長い時間をされて、コマンド「rsync」のためにこれを使用しています:

rsync -pogh --partial --inplace --append --progress <ソース> <出先>

プログレスバーを示すほかに、それは利点のいくつかを持っている。これは、例えば、あなたが別れるしなければならなかったし、続行します、のために部分的にしかコピーされた場合、操作は非常にいいです継続されます。ファイルが既に存在し、それが同一であれば、コピーは発生しません:rsyncがファイルのみをチェックして。ファイルがリモートマシンにコピーする必要がある場合、宛先は例えばも便利ですsshを、することができます。

私は、ZSHを使用しています。そして今日は、zshの補完システムのための設定を行います。関数の中で、この最初のラップされたています「rsync」コマンドを実行します:

cat ~/.zsh_func
cpv()
{
 rsync -pogh --partial --inplace --append --progress -- "$@"
}
---skip---

そして、「.bashrc」設定ファイルにこれを追加しました:

compdef _cp cpv

まあ、実際に、それはすべての人々です。^ー^コンソールであなたを参照してください。^ー^