Легкое копирование двух сегментов S3 в фоновом режиме: Nohup и многое другое!

Если вы хотите скопировать две корзины S3 в фоновом режиме, мы вам поможем! В этой статье мы рассмотрим различные методы, в том числе популярную команду nohup, позволяющую легко выполнить эту задачу. Итак, возьмите свой любимый напиток, расслабьтесь и начнем!

Метод 1: использование команды nohup
Команда nohup позволяет запускать команду в фоновом режиме даже после выхода из терминала. Вот как вы можете использовать его для одновременного копирования двух сегментов S3:

Шаг 1. Откройте терминал или SSH для подключения к серверу.
Шаг 2. Выполните следующую команду:

nohup aws s3 sync s3://source-bucket-name s3://destination-bucket-name &> copy.log &

Объяснение:

  • Команда aws s3 syncсинхронизирует содержимое исходного сегмента с целевым сегментом.
  • s3://source-bucket-name – это имя исходного сегмента.
  • s3://destination-bucket-name — название целевого сегмента.
  • &> copy.logперенаправляет как стандартный вывод, так и вывод ошибок в файл журнала с именем copy.log.
  • Последний символ &запускает команду в фоновом режиме.

Метод 2: использование GNU Screen
GNU Screen — это мощный терминальный мультиплексор, который позволяет создавать несколько терминальных сеансов в одном окне. Вот как вы можете его использовать:

Шаг 1. Установите GNU Screen, если он еще не установлен в вашей системе.
Шаг 2. Откройте терминал или SSH на своем сервере.
Шаг 3. Запустите новый сеанс экрана, выполнив следующую команду:

screen -S s3-copy

Шаг 4. В сеансе экрана выполните следующие команды, чтобы скопировать два сегмента:

aws s3 sync s3://source-bucket-name s3://destination-bucket-name &> copy1.log

Нажмите Ctrl+A, затем c, чтобы создать новое окно экрана, а затем выполните следующую команду:

aws s3 sync s3://source-bucket-name2 s3://destination-bucket-name2 &> copy2.log

Объяснение:

  • Опция -S s3-copyв команде screenприсваивает имя сеансу экрана.
  • Вы можете переключаться между несколькими экранными окнами, используя Ctrl+A, а затем n(следующий) или p(предыдущий).
  • Каждая команда aws s3 syncсинхронизирует содержимое исходного сегмента с целевым сегментом.
  • Замените названия сегментов source-bucket-name, destination-bucket-name, source-bucket-name2и destination-bucket-name2реальными именами сегментов.
  • &> copy1.logи &> copy2.logперенаправляют выходные данные команды в отдельные файлы журналов.

Метод 3: использование сценария Bash и фоновых процессов
Другой подход — создать сценарий Bash, который запускает команды копирования в качестве фоновых процессов. Вот пример:

Шаг 1. Создайте новый файл с именем copy_script.shи откройте его в текстовом редакторе.
Шаг 2. Добавьте в скрипт следующее содержимое:

#!/bin/bash
# Copying bucket 1
aws s3 sync s3://source-bucket-name s3://destination-bucket-name &> copy1.log &
# Copying bucket 2
aws s3 sync s3://source-bucket-name2 s3://destination-bucket-name2 &> copy2.log &

Шаг 3. Сохраните скрипт и сделайте его исполняемым, выполнив следующую команду:

chmod +x copy_script.sh

Шаг 4. Выполните скрипт в фоновом режиме:

nohup ./copy_script.sh &

Объяснение:

  • Скрипт Bash выполняет каждую команду aws s3 syncкак отдельный фоновый процесс.
  • Символ &в конце каждой команды запускает ее в фоновом режиме.
  • Команда nohupгарантирует, что сценарий продолжит работу даже после выхода из системы.

Копировать два сегмента S3 в фоновом режиме теперь стало проще, чем когда-либо, благодаря таким методам, как использование команды nohup, GNU Screen и сценариев Bash. Выберите подход, который соответствует вашим требованиям, и наслаждайтесь беспроблемным копированием!