It’s true—beets doesn’t keep track of the incremental-import state in the database. Instead, that goes in a special file on the side, called state.pickle
, in the beets configuration directory (usually ~/.config/beets
).
Beets actually has two different answers to these two questions:
- For new music, that’s what incremental import mode is for. However, it can get a little confusing when you’re importing to the same directory you’re importing from. That’s why the Getting Started guide recommends keeping the “inbox” separate from the “library” to keep this straight. But it should still probably work, most of the time, for in-place imports!
- For deleted music, that’s (half of) what the
update
command does.
Beets does not really have an answer for this beyond just letting you remove them and then import them again in their new location. This is because I think a good solution to tracking “moves” would be impossible! The filesystem doesn’t actually keep track of moves & renames—it just looks like one file disappeared and a new one appeared. So beets could try to do something like scan for files that have identical contents, but that would require (a) merely guessing about what moves happened in the past, and (b) computing, storing, and keeping up to date hashes of the contents, which would be extremely costly in the “common case” even when it’s never used.