Если вы думаете, что сеть на вашем конце работает довольно быстро, подтвердите это с помощью таких сайтов, как SpeedTest. Если вы правы, проверьте производительность системы, к которой вы подключаетесь, она может быть перегружена. Кроме того, такие утилиты, как ping, traceroute и т. Д., Могут помочь вам проверить перегрузку, если таковая имеется, как было предложено выше @Jakuje. Вы также можете использовать Wireshark, чтобы получить более реалистичное представление о том, что происходит с вашими пакетами.
Что вам действительно нужно сделать, так это исправить ваш сценарий, чтобы он преобразовывал пути Windows в пути Unix. Один относительно простой способ сделать это — убрать разделители путей из уравнения :, а не указывать полные имена путей для копирования.вы рекурсивно просматриваете каталоги, создавая целевые каталоги на удаленной стороне и указывая только имя файла, а не полный путь.:)
Но пока вы не дойдете до этого момента, вам нужно защитить обратную косую черту от оболочки. Вы можете сделать это, заключив в кавычки одинарные кавычки (обратная косая черта интерпретируется для некоторых символов внутри двойных кавычек ). Обратите внимание, что подстановочный знак находится вне кавычек, поэтому оболочка обрабатывает его как подстановочный знак, а не как литерал*
::)
rm -rv '.\'*
Или вы можете сделать это, избегая обратной косой черты (, что также будет работать в двойных кавычках, но здесь двойные кавычки не нужны):
rm -rv.\\*
Я бы посоветовал, прежде чем удалять данные с помощью подстановочного знака, всегда сначала запускать ls
с теми же аргументами, а затем использовать стрелку вверх, чтобы вызвать последнюю команду, где вы можете изменить ls
на rm
. Таким образом, вы сможете увидеть список файлов до того, как они будут удалены, что предотвратит потенциально серьезную ошибку. :)Я также большой поклонник использования -v
с rm
в подобных случаях.
sauer@lightning:/tmp> ls -vr.\\*
.\innerfile\gitkeep .\gitkeep
.\innerfile:
sauer@lightning:/tmp> rm -vr.\\*
removed '.\gitkeep'
removed directory '.\innerfile'
removed '.\innerfile\gitkeep'
Так как имена файлов содержат escape-символ \
, вам нужно экранировать этот escape-символ.
rm.\\gitkeep.\\innerfile\\gitkeep
rmdir.\\innerfile
удалит ваши файлы
Если ничего не помогло, вы можете сделать следующее, чтобы удалить файлы и папки, в именах которых есть обратная косая черта или странные символы:
rm -iR *
Приведенная выше команда запустит процесс удаления всего в папке, в которой вы находитесь. Однако перед удалением каждого файла или папки появится запрос :
.rm: remove regular file `.\gitkeep? y
rm: remove regular file `.\innerfile\gitkeep'? y
Вам нужно будет ввести «y» и нажать [Enter] для каждого файла или папки, которые вы хотите удалить. Если вы встретите файл или папку, которые НЕ хотите удалять, введите «n» и нажмите [Enter].
Если вам по-прежнему предлагается указать все оставшиеся файлы и папки, но вы уже удалили то, что хотели, просто нажмите следующую комбинацию клавиш:
[Ctrl] + [c]