Если переключение на zsh
является опцией:
$ array=(foo bar bàz '')
$ padded_array=(${(r:20:)array})
$ printf '<%s>\n' $padded_array
<foo >
<bar >
<bàz >
< >
Обратите внимание, что этот (r:20:)
правый -параметр заполнения заполняет флаг расширения, но также усекает до 20 символов для более длинных строк.
Другой вариант с zsh
— сделать:
padded_array=()
(($#array)) && printf -v padded_array '%-20s' "$array[@]"
В отличие от bash
, заполнение выполняется по символам -, а не по байтам -, и zsh
поддерживает аргументы массива для опции -v
.
Обратите внимание, что если $array
содержит только один элемент, $padded_array
преобразуется в скаляр.
Для заполнения+усечения замените %-20s
на %-20.20s
.
Is it possible to run rsync over scp.
Нет:scp
— это протокол копирования файлов, работающий поверх ssh
.
Reason for involving scp: using authentication and encryption.
Нет... это реализовано ssh
транспортным уровнем
Reason for not using rsync over ssh: not giving full shell access to the remote server
Это можно реализовать в ssh
путем настройки ограниченного каталога (chroot
), содержащего двоичный файл rsync
, простую оболочку (dash
, возможно, )и необходимые вспомогательные библиотеки.
Вы можете настроить rsyncd на удаленном сервере в качестве получателя подключений rsync. Его конфигурационный файл полностью определяет, какие части файловой системы могут быть записаны или прочитаны, и какими пользователями и машинами. Это то, на что ссылается справочная страница rsync, когда она использует ::
в адресах, а не :
.
Однако через незашифрованное соединение (используется пароль для аутентификации ),хотя это обычно не проблема для использования во внутренних сетях.
Но вы также можете настроить мгновенный rsyncd , который работает через ssh. Вы создаете пользователя на сервере с записью в его файле ~/.ssh/authorized_keys
, которая указывает, что при подключении выполняется команда rsync --server --daemon --config=file.
, то есть rsyncd
с локальным файлом конфигурации.