In my experience as a longtime black powder cartridge rifle shooter, the key is to use a product specifically formulated as a rust preventive. While I currently live in a pretty dry climate (Montana), I spent many years in the much more humid eastern Oklahoma.
The best I have so far found for the purpose is Birchwood Casey’s “Sheath,” now marketed as “Barricade.” I also use it as a final bore protectant. When I’ve done my part, it has never failed me. Within a short time after application, it dries to an almost imperceptible film. Every other rust preventive I’ve used pretty much required that the bore be wiped before firing. When using “Sheath”/”Barricade,” I don’t bother to wipe the bore before shooting. Although I don’t like to do so, circumstances on a couple of occasions have forced me to shoot a first round in a match from a cold bore earlier treated with “Sheath,” and I detected no detriment to accuracy. Range testing has tended to confirm that. Conversely, I’ve heard “Sheath” touted as a lubricant a couple of times (certainly not by Birchwood-Casey), at which task it fails miserably.
More than a few in recent years have recommended “EEZ-OX” as a rust preventive. I’ve tried it and it does that job well, and has some capability as a bore solvent (which “Sheath” does not). An exterior coat of it did, eventually, form a dry film, but it remained greasy much longer than “Sheath.”
Break Free CLP is my favorite lubricant for moving parts, and it most certainly does prevent rust. But its primary intended use is what its name implies—a lubricant—and a heavy duty one at that. Unless a heavy grease is really needed, I use it almost exclusively on internal mechanisms and don’t worry about inside rust at all. Used as an exterior rust preventive, it remains a viscous, dirt attracting mess.
I’ve tried “Bore Butter” as a rust preventive, especially in rifle bores. It did work, but perhaps not as well as “Sheath.” Even its most stalwart advocates agreed that the bore of a rifle treated with it really must be wiped before firing. As an external rust preventive, it remained greasy and was not as effective as "RIG," which is my choice of a rust preventive in very unusual circumstances (for me) where a greasy external surface is acceptable. I still use “Bore Butter” to lubricate felt wads for cap-and-ball revolvers and muzzle-loading rifle patches.
I've heard and read varying reports about the efficacy of "Ballistol" as a rust preventive, an as a result of the mixed reviews, have never relied upon it as a primary rust preventive. Diluted with water, however, I've found "Ballistol" nearly invaluable for a multitude of other uses--black powder cleaning solvent, between shot bore-wiping solution for single-shot rifles, keeping badly fouled black powder revolvers running, etc.
I’ve infrequently used “Rem-Oil” as an internal lubricant and found it very satisfactory, particularly when a lubricant of lighter consistency than “Break Free CLP” is appropriate. I’ve heard good things about “Mobil-1” synthetic oil as a heavy lubricant, but have never tried it. I wouldn’t consider using either product as an external rust preventive if I could avoid doing so.
I still occasionally encounter someone who staunchly advocates "WD-40" as a rust preventive, usually in very large quantities (i.e., "drowning" the firearm in it--wood and all). Back in the 1960s, when it was still quite a new product, I used it in rational quantities as a rust preventive in humid northern New York state. It did work as such, more or less, and was probably the best alternative most of us had at the time. I believe much better rust preventives are available now. I still use WD-40 around the shop as a solvent when disassembling rusted mechanisms. I've had similar experiences with true believers in "Kroil," most of whom also believe that if a little is good, a whole lot will be wonderful. The stuff smells to high heaven and soaks into wood stocks very rapidly. It remains my favorite product for attempting to loosen badly corroded steel assemblies. I've also used it on an emergency basis to treat a couple of thoroughly rain-soaked revolvers that has to wait a couple of days before I could give them a proper cleaning. I've never otherwise attempted to use it as a general rust preventive.
Some shooters recommend the use of some type of wax as an external protectant, and I think that idea may have some merit. I have an idea, though, that wax may attract some dust and debris, build up with subsequent applications, and then be much more necessary and difficult to remove than any oil. I am an advocate of using some sort of rust-preventive wax on unexposed non-moving parts—e.g., parts of barrels covered by forends, inside surfaces of lock plates, undersides of butt plates, insides of barrel bands, etc. Until a couple of years ago, I used plain Johnson’s yellow paste wax for the purpose. I’ve recently switched to using “Renaissance Wax,” although I’ve no firsthand experience indicating that it is any better.
That’s my experience and what has worked for me.