rsync
нуждается в опции update, чтобы избежать передачи всех файлов, man rsync
предоставит вам страницу руководства и в разделе опций вы найдете,
-u, --update пропускать файлы, которые являются более новыми на приемнике -inplace обновлять файлы назначения на месте
Чтобы помочь понять, что он делает, вы можете использовать опцию -v для режима verbose.
-v, --verbose Эта опция увеличивает количество информации, предоставляемой вам во время передачи данных. По умолчанию rsync работает без звука. Однократное использование опции -v даст вам информацию о том, какие файлы передаются, и краткое резюме в в конце. Два параметра -v дадут вам информацию о том, какие файлы будут и немного больше информации в конце. Более двух опций -v следует использовать только при отладке rsync.
Обратите внимание, что имена передаваемых файлов выводятся с использованием по умолчанию --out-format "%n%L", который сообщает вам только имя файла и, если элемент является ссылкой, куда он указывает. На уровне единственного параметра -v это не упоминает, когда у файла изменяются атрибуты. Если вы попросите предоставить детализированный список измененных атрибутов (либо --item- ize-changes или добавив "%i" к параметру --out-format), вывод (на клиента) увеличивается, чтобы упомянуть все элементы, которые были изменены каким-либо образом. См. опцию --out-format для более подробной информации.
Сценарий запустит команду ./a.out
в текущем рабочем каталоге, так как это записано в сценарии; если вы запускаете скрипт из другого места, ваш двоичный файл находится не в текущем рабочем каталоге, что приводит к тому, что оболочка выдает ошибку, которую вы видите.
Если вы хотите использовать скрипт для вызова двоичного файла независимо от каталога, из которого он вызывается, у вас есть как минимум четыре варианта:
a.out
в каталог, который уже находится в вашем PATH
, и перестаньте указывать текущий рабочий каталог в качестве местоположенияa.out
(e. г. переместите a.out
в $HOME/bin/a.out
и измените сценарий, чтобы он просто запускал a.out
, а не./a.out
). ./a.out
, вместо/path/to/the/location/of/a.out
)PATH
местоположение сценария и не указывать текущий каталог в качестве местоположения двоичного файла (e. г.PATH="$PATH:/path/to/the/binary"; a.out
cd /path/to/the/binary;./a.out
)./script.sh
предполагает, что вы запускаете его в том же каталоге.
Скажем, a.out
находится в /var/run/a.out
, вы можете изменить tempstart.sh
, чтобы он содержал этот полный путь к файлу.
В этот момент вы можете запустить скрипт из любого места (при условии, что a.out
сам по себе не требует, чтобы вы находились в определенном каталоге при его запуске ).