Как автоматизировать раздел NTFS и сделать его доступным без нажатия на диск в файловом менеджере?

Вы просто должны использовать:

echo {#cws[@]}
  • {#cws} обычно используется для возврата длины строки
  • [@] важен, потому что без него значение $cws не является всем массивом, вместо него по умолчанию используется первый элемент значения массива, он же $cws[0]

Например, в командной строке мы можем сделать простой трехэлементный массив, подобный вашему:

$ cws[0]="11"; cws[1]="2"; cws[3]="8"

Теперь посмотрите, что происходит, когда мы обращаемся только к $cws:

$ echo $cws
11

Итак, при использовании расширения bash для определения длины чего-либо, {# . .. }, без [@], вы пишете ${#cws}, $cws это 11, поэтому вы спрашиваете bash "какова длина 11"? и, конечно, bash смотрит на строку 11, которая содержит два символа, поэтому Bash говорит: "О, это 2":

$ echo ${#cws}
2

Поэтому, чтобы уточнить, что вы имели в виду длину массива, вспомните [@]:

$ echo ${#cws[@]}
3
8
23.08.2018, 14:14
4 ответа

Я не думаю, что sshограничивается использованием sh. Это скорее зависит от того, что установлено в целевой системе, как настроен пользователь и какие оболочки разрешены в /etc/shells.

Вы приняли во внимание команду chsh?

4
27.01.2020, 20:08

Если вы хотите сделать это быстро, вы можете посмотреть rsyncс другим алгоритмом шифрования. Это дает вам возможность легко исключать и т. д., не сильно жертвуя скоростью.

rsync -aHAXxv --numeric-ids --progress -e "ssh -T -c arcfour -o Compression=no -x" user@<source>:<source_dir> <dest_dir>

вместе с добавлением шифрования arcfourв строку, начинающуюся с Ciphersв /etc/ssh/ssh_config, если она еще не включена, дает вам приемлемую скорость.

ПРЕДУПРЕЖДЕНИЕ :Шифрование arcfourявляется ненадежным . НЕ запускайте это по незащищенным каналам. Если вас беспокоит доступ к серверу из незащищенных каналов с использованием шифрования arcfour, измените etc/ssh/ssh_configна хост -конкретную часть для исходного хоста -Создайте раздел Hostв вашей конфигурации ssh _для вашего исходного хоста вы можете использовать Ciphers arcfourтам, чтобы отразить указанный выше переключатель -c, который ограничивает шифрование arcfourтолько этим хостом.

Подробнее см. справочные страницы ssh_config.

Однако, если ваши процессоры поддерживают набор инструкций AES -NI, попробуйте переключиться на aes128 -gcm@openssh.com (да, это имя шифра, включая @stuff ), который используйте невероятно быстрый (с AES -NI )AES128 -GCM.

Таким образом, если ЦП поддерживает AES -NI, измените "ssh -T -c arcfour -o Compression=no -x"на "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x"для получения более безопасных результатов.

Пояснение

rsync

  • (Не используйте -z, это намного медленнее)
  • a:режим архива -рекурсивный, сохраняет владельца, сохраняет разрешения, сохраняет время модификации, сохраняет группу, копирует символические ссылки как символические ссылки, сохраняет файлы устройств.
  • H:сохраняет жесткие -ссылки
  • A:сохраняет списки ACL
  • X:сохраняет расширенные атрибуты
  • x:не пересекать файл -границы системы
  • v:увеличить детализацию
  • --numeric-ds:не сопоставлять значения uid/gid по имени пользователя/группы
  • если вам нужна синхронизация,добавить--delete:удалить посторонние файлы из целевых каталогов (дифференциальную очистку -во время синхронизации)
  • --progress:показать прогресс во время передачи

сш

  • T:отключите псевдо -tty, чтобы уменьшить нагрузку на процессор в пункте назначения.
  • c arcfour:используйте самое слабое, но самое быстрое шифрование SSH. Необходимо указать «Ciphers arcfour» в конфигурации sshd _на месте назначения.
  • o Compression=no:Отключить сжатие SSH.
  • x:отключить переадресацию X, если она включена по умолчанию.

Суть в опциях ssh-, если вы просто используете rsync -avи часть -e ssh -T -c arcfour -o Compression=no -x", вы также можете получить эти скорости.


Сравнение:

  • 13,6 МБ/сrsync -az
  • 16,7 МБ/сscp -Cr
  • 44,8 МБ/сrsync -a
  • 59,8 МБ/сsftp
  • 61,2 МБ/сscp -r
  • 61,4 МБ/сsftp -R 128 -B 65536
  • 62,4 МБ/сrsync -a -P -e "ssh -T -c arcfour -o Compression=no -x"
  • 143,5 МБ/сscp -r -c arcfour
  • 144,2 МБ/сsftp -oCiphers=arcfour

Источники:

https://gist.github.com/KartikTalwar/4393116

http://nz2nz.blogspot.com/2018/05/rsync-scp-sftp-speed-test.html

4
27.01.2020, 20:08

Сначала несколько заметок:

  • сервер ssh не запускается shдля интерпретации командной строки, отправленной клиентом, он запускает оболочку входа пользователя на удаленном хосте, как that-shell -c <the-string-provided-by-the-client>. Оболочка входа удаленного пользователя может быть любой. Имейте в виду, что некоторые оболочки, такие как tcsh, fishили rc, имеют синтаксис, сильно отличающийся от синтаксиса sh.
  • на самом деле это командная строка или, точнее, строка (, которая может содержать символы новой строки, то есть несколько строк ). Даже если вы выполните ssh host cmd arg1 'arg 2', где cmd, arg1и arg 2— три аргумента, переданных в ssh, sshобъединяет эти аргументы с пробелами и фактически отправляет строку cmd arg1 arg 2в sshdи удаленная оболочка разделит это на cmd, arg1, argи 2.
  • !(subdir)является оператором глобуса (оператором глобуса ksh, также поддерживаемым zsh -o kshglobиbash -O extglob). Как и все глобусы, он исключает скрытые файлы, поэтому будьте осторожны, могут быть и другие файлы, которые он исключает.

Здесь, чтобы избежать проблем с поиском правильного синтаксиса для удаленной оболочки, вы можете фактически указать этой другой оболочке запустить нужную оболочку и передать ей код через стандартный ввод (один из параметров, перечисленных в Как выполнить произвольную простую команду через ssh, не зная оболочки входа удаленного пользователя?)

ssh host 'bash -O extglob -O dotglob' << 'EOF'
cp -r srcdir/!(subdir) dstdir/
EOF

bash -O extglob -O dotglob— это командная строка, которая одинаково понимается всеми основными оболочками, включая Bourne -, например, csh, rc, fish... Вышеприведенное будет работать до тех пор, пока bashустановлен и находится в папке пользователя.$PATH(по умолчанию $PATH, возможно изменено оболочкой входа пользователя, например ~/.zshenvдля zsh, ~/.cshrcдля csh, ~/.bashrcдляbash).

POSIXly (хотя на практике вы можете обнаружить, что больше систем имеют команду bash, чем команду pax), вы могли бы:

ssh host sh << 'EOF'
cd srcdir && pax -rw -'s|^\.//\./subdir\(/.*\)\{0,1\}$||'.//. /path/to/destdir/
EOF

-sприменяет замены к передаваемым путям. Когда эта замена превращается в ничто, файл исключается.Проблема в том, что замены также применяются к цели символических ссылок. Вот почему мы используем .//.выше, чтобы снизить вероятность воздействия на символическую ссылку.

6
27.01.2020, 20:08

Согласно моим расчетам, самая быстрая полная копия всегда использует «tar» (здесь, предполагая, что GNU tarили совместимый ).

mkdir -p photos2 &&
  tar -C photos -cf - --exclude=./.thumbcache. |
  tar -C photos2 -xpf -

И tarимеет массу опций для управления атрибутами, разрешениями и выбором/исключением файлов. Например, приведенная выше команда исключает вложенную папку верхнего уровня с именем.thumbcache при копировании.

2
27.01.2020, 20:08

Теги

Похожие вопросы