В Debian Вы могли просто звонить x-terminal-emulator -e /some/command
, поскольку это указывает на эмулятор терминала, настроенный "альтернативным" механизмом Debian. Это настроено через
# update-alternatives --config x-terminal-emulator
который позволяет, Вы выбрали который из установленных эмуляторов терминала X11 для использования в качестве по умолчанию, т.е. как x-terminal-emulator
. В конце это - конструкция символьной ссылки, например, для gnome-terminal
:
$ which x-terminal-emulator
/usr/bin/x-terminal-emulator
$ ls -al /usr/bin/x-terminal-emulator
lrwxrwxrwx 1 root root 37 Apr 26 2010 /usr/bin/x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
$ ls -al /etc/alternatives/x-terminal-emulator
lrwxrwxrwx 1 root root 31 Apr 26 2010 /etc/alternatives/x-terminal-emulator -> /usr/bin/gnome-terminal.wrapper
$ file /usr/bin/gnome-terminal.wrapper
/usr/bin/gnome-terminal.wrapper: Perl script, ASCII text executable
Некоторые комментарии,
xdg-terminal
, но по-видимому не в Debian.Я не рекомендовал бы использовать scp
для передачи больших деревьев файла непосредственно, потому что это не обрабатывает ни трудно, ни гибкие ссылки правильно, также не сжат поток.
Я рекомендовал бы cpio
с (de) сжатием на лету:
ssh user@host "cd /path/to/files && find . | cpio -ov | bzip2 -c" | bunzip2 -c | cpio -ivd
Кроме того, find
может обработать дополнительные условия, как "файлы должны быть меньше, чем 4G"
find . -size -4G | ...
Сделать cpio
более благоприятный для пространства (для обработки пробелов в именах файлов правильно) использование
find . -print0 | cpio -0 -ivd | ...
Вы не должны создавать файл tar прежде, чем отправить его. Можно сделать его на лету:
cd /source/dir
tar -cf - . | ssh 'cd /destination/directory && tar -xf -'
Это действительно требует, чтобы удаленный сервер принял соединения оболочки ssh, не только scp соединения. В теории возможно отправить произвольные деревья файла удаленной стороне, которые не соответствуют ничему как локальная файловая структура, но я не знаю ни о каком существующем инструменте, чтобы сделать это.
Если символьные ссылки являются проблемой, можно сделать копию дерева каталогов, которое не включает символьные ссылки, и это израсходовало незначительное пространство, предполагая, что исходное дерево находится в файловой системе, которая поддерживает жесткие ссылки (так любая собственная файловая система Unix, или NTFS, но не FAT). Я принимаю утилиты GNU здесь:
cd /source/dir
mkdir ../regular-files-only
cp -al . ../regular-files-only
find ../regular-file-only \! -type f \! -type d -delete
Вы могли также использовать sftp. sftp -r
не переходит по символьным ссылкам, в отличие от этого scp -r
.
Другим вариантом является использование sftp -r
, как указано вsftp
руководстве :
Recursively copy entire directories when uploading and downloading. Note that sftp does not follow symbolic links encountered in the tree traversal.
Итак,
sftp -r source@surce_server.com:/source/dir.
делает именно то, что вы хотите сделать.