mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-12-12 06:07:57 +00:00
Merge pull request #688 from juangacovas/patch-1
Update FAQ entry on scripting
This commit is contained in:
commit
5619ec57cc
@ -39,4 +39,40 @@ sync {
|
||||
}
|
||||
{% endhighlight %}
|
||||
|
||||
If you want to track directories and files passed to rsync command (--include-from) in your bash script, consider that they come via STDIN and NUL delimited chars (rsync is called using --include-from=- --from0).
|
||||
|
||||
After calling rsync within your script, STDIN is lost, so if you need it later could do something like this:
|
||||
|
||||
{% highlight shell %}
|
||||
#!/bin/bash
|
||||
|
||||
#create unique temp file to store incoming STDIN
|
||||
_TMP_FILE=$(mktemp -q /tmp/lsd-rsync.XXXXXXXXXX || exit 1)
|
||||
|
||||
#Set trap to automatically clean up the temp file on exit
|
||||
trap 'rm -f -- "$_TMP_FILE"' EXIT
|
||||
|
||||
#get last argument (TARGET) and next to last (SOURCE)
|
||||
_SOURCE=${@: -2:1}
|
||||
_TARGET=${@: -1:1}
|
||||
|
||||
#save the current STDIN with \0 (NUL) chars to a file, or we'll lose the original STDIN after calling rsync
|
||||
cat - >$_TMP_FILE
|
||||
|
||||
#execute rsync with arguments and inject STDIN with NUL delimited chars
|
||||
/usr/bin/rsync "$@" <$_TMP_FILE
|
||||
|
||||
result=$?
|
||||
(
|
||||
# ...
|
||||
# Do anything you need with our saved STDIN as $_TMP_FILE, $_SOURCE, $_TARGET, etc.
|
||||
# ...
|
||||
# for example
|
||||
# replace \0 (NUL) chars with tabs in our stdin saved as a file
|
||||
# sed -i 's/\x0/\t/g' $_TMP_FILE
|
||||
# pass this new file to other script, etc.
|
||||
)
|
||||
|
||||
{% endhighlight %}
|
||||
|
||||
## [‹‹ back to FAQ index](../)
|
||||
|
Loading…
Reference in New Issue
Block a user