Your basic requirement is met with:
safeExport[file_String, args___] :=
If[
! FileExistsQ[file] || ChoiceDialog["File already exists. Overwrite?"],
Export[file, args],
$Failed
]
What you describe as "attributes" (e.g. PlotRange -> All) are known as Options or named optional arguments. (See Attributes for a description of what that term means in Mathematica.) To learn how to set up Options please see:
My answer to that question specifically deals with a custom function that is an extension of a built-in, with additional Options.
Regarding the Options aspect of my answer I realize there is a problem when trying to apply the method described in my linked answer. This is because Export has no "official" Options (Option[Export] returns {}) despite taking a variety of special options for its different formats. Therefore if one follows my guide and uses a pattern like OptionsPattern[{Export, export2}] in the definition of a function export2 you will get error messages like:
export2["foo.gif", {1, 2, 3}, "DitheringMethod" -> None]
OptionValue::nodef: Unknown option DitheringMethod for {Export,export2}. >>
Essentially Export breaks the new Options convention since it does not have rigorously defined Options. One could use the deprecated method OptionQ described by Leonid here, but I think if Option-like behavior is needed it would be better to use a different workaround. I propose:
Options[export2] = {"Confirmation" -> True};
export2[OptionsPattern[]] := If[OptionValue["Confirmation"], safeExport, Export]
Usage examples:
export2[]["foo.gif", {1, 2, 3}, "DitheringMethod" -> None]
SetOptions[export2, "Confirmation" -> False];
export2[]["foo.gif", {1, 2, 3}, "DitheringMethod" -> None]
export2["Confirmation" -> True]["foo.gif", {1, 2, 3}, "DitheringMethod" -> None]
OptionsPatternmethod recommended in the link is not applicable toExport. Sorry for any confusion this may have caused. – Mr.Wizard Feb 24 '15 at 18:45