support source protection with snapshot

Fix #269