mirror of
https://github.com/octoleo/lsyncd.git
synced 2024-12-12 14:17:47 +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 %}
|
{% 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](../)
|
## [‹‹ back to FAQ index](../)
|
||||||
|
Loading…
Reference in New Issue
Block a user