var hugoCmdV *cobra.Command
 
 // Flags that are to be added to commands.
-var BuildWatch, IgnoreCache, Draft, Future, UglyURLs, CanonifyURLs, Verbose, Logging, VerboseLog, DisableRSS, DisableSitemap, DisableRobotsTXT, PluralizeListTitles, PreserveTaxonomyNames, NoTimes, ForceSync bool
+var BuildWatch, IgnoreCache, Draft, Future, UglyURLs, CanonifyURLs, Verbose, Logging, VerboseLog, DisableRSS, DisableSitemap, DisableRobotsTXT, PluralizeListTitles, PreserveTaxonomyNames, NoTimes, ForceSync, CleanDestination bool
 var Source, CacheDir, Destination, Theme, BaseURL, CfgFile, LogFile, Editor string
 
 // Execute adds all child commands to the root command HugoCmd and sets flags appropriately.
 // initCoreCommonFlags initializes common flags used by Hugo core commands
 // such as hugo itself, server, check, config and benchmark.
 func initCoreCommonFlags(cmd *cobra.Command) {
+       cmd.Flags().BoolVar(&CleanDestination, "cleanDestinationDir", false, "Remove files from destination not found in static directories")
        cmd.Flags().BoolVarP(&Draft, "buildDrafts", "D", false, "include content marked as draft")
        cmd.Flags().BoolVarP(&Future, "buildFuture", "F", false, "include content with publishdate in the future")
        cmd.Flags().BoolVar(&DisableRSS, "disableRSS", false, "Do not build RSS files")
 }
 
 func LoadDefaultSettings() {
+       viper.SetDefault("cleanDestinationDir", false)
        viper.SetDefault("Watch", false)
        viper.SetDefault("MetaDataFormat", "toml")
        viper.SetDefault("DisableRSS", false)
        }
 
        for _, cmdV := range append([]*cobra.Command{hugoCmdV}, subCmdVs...) {
+               if cmdV.Flags().Lookup("cleanDestinationDir").Changed {
+                       viper.Set("cleanDestinationDir", CleanDestination)
+               }
                if cmdV.Flags().Lookup("buildDrafts").Changed {
                        viper.Set("BuildDrafts", Draft)
                }
        syncer.DestFs = hugofs.DestinationFS
        // Now that we are using a unionFs for the static directories
        // We can effectively clean the publishDir on initial sync
-       syncer.Delete = true
+       syncer.Delete = viper.GetBool("cleanDestinationDir")
        jww.INFO.Println("syncing static files to", publishDir)
 
        // because we are using a baseFs (to get the union right).