Ссылка на локальный каталог внутри блока 'src' в режиме org, оцененного удаленно через TRAMP - PullRequest
0 голосов
/ 01 ноября 2018

Надеюсь, это будет легко решить. Я пытаюсь сделать резервную копию моего личного веб-сайта прямо на моем жестком диске с помощью компактного блока 'src' в режиме org, который оценивается удаленно с помощью tramp.

#+BEGIN_SRC sh :results silent :dir /ssh:username@hostname:
  # Backup mysql database
  mysqldump -u user -p database > public_html/BACKUP.sql
  # Compress directory with the above file and the website main configs
  tar zcvf - public_html > $(date +%Y_%m)-website_backup.tar.gz
  # Remove database backup from server
  rm public_html/BACKUP.sql
#+END_SRC

Я доволен почти всем в приведенном выше коде, однако я хотел бы, чтобы команда tar создала выходной файл на моей машине или на жестком диске (локально по существу). В настоящее время файл tar.gz создается на удаленной машине. Есть ли способ указать мой локальный каталог внутри кода выше? Заранее благодарю за любую помощь.

UPDATE

Окончательная настройка выглядит следующим образом

#+NAME: remote
#+BEGIN_SRC sh :results silent :dir /ssh:username@hostname:
  # Backup mysql database
  mysqldump -u user -p database > public_html/BACKUP.sql
  # Compress directory with the above file and the website main configs
  tar zcvf - public_html > $(date +%Y_%m)-website_backup.tar.gz
  # Remove database backup from server
  rm public_html/BACKUP.sql
#+END_SRC
#+NAME: local 
#+BEGIN_SRC sh :results silent :var r=remote
  echo $r
  rsync -av --remove-source-files -e ssh user@hostname:$(date +%Y_%m)-website_backup.tar.gz /path_to_HDD
#+END_SRC

, который при выполнении локального блока даст желаемый результат. Примечание. Предполагается использование ssh-agent. Если кто-нибудь знает, как это сделать с помощью auth-source, сообщите мне.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Вы можете создать другой блок кода, который выполняется локально, и вызвать scp или что-то еще из этого. Затем обратитесь к удаленному в локальном. Вот игрушечный пример, где моя машина shannon, а удаленная easybake:

#+NAME: remote
#+BEGIN_SRC shell :dir /ssh:easybake:
hostname
#+END_SRC

#+RESULTS: remote
: easybake

#+NAME: local 
#+BEGIN_SRC shell :var r=remote
echo $r
hostname
#+END_SRC

#+RESULTS: local
| easybake |
| shannon  |

Вам не нужно использовать вывод remote, директива :var запускает его.

0 голосов
/ 01 ноября 2018

Полагаю, нет, вам придется использовать команду rsync , чтобы скопировать созданную резервную копию с удаленной машины на вашу.

См. https://download.samba.org/pub/rsync/rsync.html

...