The reference documentation for Filespooler is here:
- Summary of Filespooler
- Basic description of the on-disk format, queue, and job files
- Summary of encoding, decoding, and adding files to the queue
- Installation instructions
- Environment, exit code, and locking/concurrency.
- Reference for all subcommands and options.
It does NOT include detailed tutorials, which can be found at Filespooler.
Links to this note
In the Using Filespooler over Syncthing example, we synced the entire
b64queuedirectory. This is unnecessary.
Filespooler is a way to execute commands in strict order on a remote machine, and its communication method is by files. This is a perfect mix for Syncthing (and others, but this page is about Filespooler and Syncthing).
By default, Filespooler doesn’t do anything special with the output from the commands that
fspl queue-processexecutes. If they write to stdout or stderr, you’ll see this on the controlling terminal or wherever you have piped or redirected it.
All of the Filespooler examples so far have focused on using
fspl queue-processto process queue items.
You’ll notice that Filespooler’s
fspl queue-processcommand takes a single command. What if you want to permit the sender to select any of several commands to run?
Filespooler is designed around careful sequential processing of jobs. It doesn’t have native support for parallel processing; those tasks may be best left to the queue managers that specialize in them. However, there are some strategies you can consider to achieve something of this effect even in Filespooler.
It seems that lately I’ve written several shell implementations of a simple queue that enforces ordered execution of jobs that may arrive out of order. After writing this for the nth time in bash, I decided it was time to do it properly. But first, a word on the why of it all.
Filespooler lets you request the remote execution of programs, including stdin and environment. It can use tools such as S3, Dropbox, Syncthing, NNCP, ssh, UUCP, USB drives, CDs, etc. as transport; basically, a filesystem is the network for Filespooler. Filespooler is particularly suited to distributed and Asynchronous Communication.
One frustration people sometimes have with ssh or NNCP is that they’d like to pass along a lot of metadata to the receiving end. Both ssh and nncp-exec allow you to pass along command-line parameters, but neither of them permit passing along more than that. What if you have a whole host of data to pass? Maybe a dozen things, some of them optional? It would be very nice if you could pass along the environment.