1

Этот ответ должен где-то существовать, так как он очень простой, но я не могу его найти.

У меня есть файл на локальном компьютере, который я хочу скопировать на удаленный хост. Я знаю, как использовать scp, но если я делаю это с локального хоста на удаленный хост, я получаю ошибку разрешения. Я могу войти на удаленный хост с правами суперпользователя, но я не знаю, как определить мою локальную машину (я пробовал как внутренние, так и внешние IP-адреса и тайм-аут оба раза). Любой метод будет работать для меня (хотя в идеале я хотел бы знать, как сделать оба!)

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

(Дополнительный вопрос: Буду рад любым рекомендациям для хороших ресурсов Linux!)

2 ответа2

3

Это именно то , для чего был создан rsync ! Если у вас есть SSH-доступ к удаленному компьютеру, а на удаленном компьютере установлен rsync , вы можете:

rsync -avz /path/to/local/file username@host:/destination/path

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

Разбивка флагов:

  • -a "Архив" - копировать рекурсивно и сохранять атрибуты / разрешения, где это возможно.
  • -v "Verbose" - распечатывать каждое имя файла после его копирования
  • -z "Сжать" - gzip данные, когда они идут по сети. Более быстрая передача и более низкая пропускная способность за счет процессорной обработки.

Если вы передаете большие файлы, опция --progress также может быть полезна.

0
ssh username@remotehost tee /home/user/example.file < ./example.local.file

Что это делает:

  • читает содержимое локального файла ./example.local.file
  • SSH в remotehost как username
  • запускает tee на удаленном хосте
  • и инструктирует его помещать то, что он получает в качестве входных данных, в /home/user/example.file

Преимущества:

  • просто

Недостатки:

  • перезаписывает весь файл, независимо от состояния удаленного файла
  • это также означает, что весь файл всегда будет передаваться по проводам
  • tee ответит всем, что получит; это может быть нежелательно с двоичными файлами

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .